2008-12-24
В одной из первых своих заметок про OpenSolaris я писал, что не всё там благополучно было с вводом кириллицы. Нет, сам по себе русский как язык ввода поддерживается, как говорится, "искаропки". То есть сразу после инсталляции (при выборе в ходе её соответствующих опций) имеются
Казалось бы чего ещё желать русскоязычному (точнее, кириллопишущему) человеку, вне зависимости от его подданства и пятого пункта анкеты? Согласен, почти нечего, но:
Короче говоря, жить с такой раскладкой в пост-советской России категорически не комфортно. И когда я понял, что OpenSolaris для меня — это всерьёз и надолго, то начал искать пути к исправлению положения.
Предварительное Google'ние по теме показало, что путей таких имеется три:
Начать я решил, разумеется, с первого способа, помятуя древний принцип, что Икс — он и в Африке who? — правильно, X, и везде через xorg.conf должен конфигурироваться более или менее одинаково. Однако если на счёт Африки, как показывает пример Ubuntu, это и верно, то за пределы Земли действие этого принципа не распространяется.
Начать с того что в свежеустановленном OpenSolaris файла /etc/X11/xorg.conf нет вообще. Действительно, современный Xorg позволяет, в принципе, запустить сам себя без всякого конфигурационного файла: тип графического чипа и характеристики видеоподсистемы определяются автоматически, управление шрифтами берёт на себя font-сервер, мыши и клавиатуры в базовой "железной" своей части одинаковы. Получается, что только для задания опций xkb он и нужен (а если, как мы увидим ниже, можно обойтись без xkb, то не нужен вообще).
Тем не менее, создать /etc/X11/xorg.conf труда не составляет. Для этого достаточно, подмазав режиссёра командой
$ su -
получить роль root'а, и дать команду
# Xorg -configure
Результатом её будет появление в каталоге /root прототипа Иксового конфига — файла xorg.conf.new с правильно (будем надеяться) определёнными базовыми параметрами — теми же самыми, которые автоматически определяются при запуске X-сервера без конфига. Остаётся только скопировать его куда следует
# cp /root/xorg.conf.new /etc/X11/xorg.conf
и отредактировать желательным образом секцию "InputDevice", которая в первозданном состоянии выглядит так:
Identifier "Keyboard0"
Driver "kbd"
Например, придать ей следующий вид:
Section "InputDevice" Identifier "Keyboard1" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "us,ru" Option "XkbVariant" ",winkeys" Option "XkbOptions" "grp:lwin_toggle" EndSection
Здесь для русской раскладки используется вариант winkeys (при котором расположение клавиш совпадает с фабричной маркировкой на всех современных клавиатурах), а под переключатель латиница/кириллица задействуется левая win-клавиша — именно её я пользовал в этом качестве до начала разборок "Солнечной Клавой", ввиду невозможности задействовать ставший привычным CapsLock.
Перезагружаю X-сервер — то есть просто выхожу из сеанса пользователя, себя, любимого, и регистрируюсь в gdm по новой. На первый взгляд, всё стало почти как у Виктора Вагнера:
— Хорошо-то как, Клава...
— Да не Клава я!
— Всё равно хорошо...
Знаки препинания при русской раскладке стали вводиться в соответствие с их обозначением на клавишах, появилась столь любимая нами буква ё (правда говорят, что скоро введут йотированную б, и потребность в ней резко сократится), а левый backslash перестал генерировать нулевой символ. А после того как я скопировал свой неизменный уже ряд лет символьно-раскладочный файл path2/xkb/symbols/ru вместо оригинального /usr/X11R6/lib/X11/xkb/symbols/ru (в нём, в частности, этот самый левый backslash на нижнем регистре генерирует запятую — и какой альтернативно чудаковатый придумал поместить запятую на верхний регистр?), жизнь показалась прекрасной.
Тем не менее, удивительной она быть не перестала, и "Солнечная Клава" не замедлила показать, что она хоть и Клава, но не совсем та. Во-первых, штатный индикатор текущей раскладки перестал что-либо индицировать. Конечно, это не было полной неожиданностью — но, при отсутствии каких-либо световых индикаторов на самой клавиатуре (а таковые нынче становятся реликтами не только на ноутбуках, но и на десктопных моделях), оказалось вполне неприятным.
Во-вторых же, и главных, попытка задействовать в качестве переключателя CapsLock, к которому я привык за последние десять лет (и который исторически имеет полное право считаться наистандартнейшим из стандартных), окончилась провалом. Заменив последнюю строку предыдущего фрагмента конфига на
Option "XkbOptions" "grp:caps_toggle"
завершив сеанс и попытавшись войти снова, я обнаружил что не могу ввести логин и пароль: сообщение gdm гласило, что у меня включён CapsLock, и выдавало ошибку авторизации. Благо, копия предыдущей загрузочной среды у меня имела место быть, и о возможности отката на неё я уже знал.
В результате сочетания этих двух факторов эксперимент с настройкой раскладок через xorg.conf был признан неудачным. Да и в любом случае это было бы лишь временным костылеобразным решением — уж больно оно не укладывалось в стройную системы конфигурирования OpenSolaris. Хотя способ этот годится, если надо на скорую руку подключить привычный вариант кириллической раскладки из числа стандартных для xkb (а это, если исключить base, который есть и так, — winkeys, typewriter, phonetic), не использовать "запрещенные" переключатели (пока в качестве такового я выявил лишь CapsLock) и довольствоваться индикацией текущей раскладки через светодиоды клавиатуры.
Вариант с setxkbmap я оставил на самый крайний случай полной безвыходности. Во-первых, при беглом ознакомлении с его краткой (хотя и вполне восторженной характеристикой, данной Александром Ерёминым) я с лёту не уяснил его сути — то есть требовалось вникать в него путём чтения документации. То есть делать то же самое, что пришлось бы делать и при углублённом знакомстве со штатной переключалкой. А во-вторых, у меня сложилось впечатление, что это такая же подпорка, как и прямое редактирование xorg.conf — так что я решил таки заняться более детальной разборкой третьего варианта. Благо на деле с ним оказалось всё не так страшно, как выглядело поначалу.