Давным-давно я разместил результаты небольших изысканий по организации собственной раскладки в Slackware 12.1 и 13.0:
http://www.linux.org.ru/forum/desktop/3930825
Сегодня потратил почти полдня, чтобы разобраться, как заставить работать свою раскладку в Debian 6.0.1. Может, кому-нибудь пригодится, чтобы не тратить время на поиски.
Итак, добавление варианта раскладки в Дебиане. В моём случае вариант «feo» раскладки «ru».
1. На всякий случай сохранить каталог /usr/share/X11/xkb, файл /etc/default/keyboard.
2. Дописать свою раскладку в файл /usr/share/X11/xkb/symbols/ru.
Например, у меня в этом файле есть строчки:
partial alphanumeric_keys
xkb_symbols "feo" {
include "ru(common)"
name[Group1]= "Russia - Feo";
key <TLDE> { [ question, asterisk, periodcentered ] };
key <AE01> { [ exclam, 1, 0x01000301 ] };
key <AE02> { [ guillemotleft, 2, doublelowquotemark ] };
key <AE03> { [ guillemotright, 3, leftdoublequotemark ] };
key <AE04> { [ semicolon, 4, quotedbl ] };
key <AE05> { [ colon, 5, percent ] };
key <AE06> { [ comma, 6, apostrophe ] };
key <AE07> { [ period, 7, degree ] };
key <AE08> { [ underscore, 8, asciicircum ] };
key <AE09> { [ parenleft, 9, bracketleft ] };
key <AE10> { [ parenright, 0, bracketright ] };
key <AE11> { [ minus, 0x01002212, section ] };
key <AE12> { [ equal, plus, plusminus ] };
key <BKSL> { [ emdash, slash, numerosign ] };
key <AB10> { [ Cyrillic_io, Cyrillic_IO ] };
key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, 0x01002196 ] };
key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, 0x01002191 ] };
key <AD03> { [ Cyrillic_u, Cyrillic_U, 0x01002197 ] };
key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] };
key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] };
key <AD06> { [ Cyrillic_en, Cyrillic_EN ] };
key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] };
key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] };
key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] };
key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] };
key <AD11> { [ Cyrillic_ha, Cyrillic_HA, 0x01002717 ] };
key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN, 0x01002713 ] };
key <AC01> { [ Cyrillic_ef, Cyrillic_EF, 0x01002190 ] };
key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, 0x010021BB ] };
key <AC03> { [ Cyrillic_ve, Cyrillic_VE, 0x01002192 ] };
key <AC04> { [ Cyrillic_a, Cyrillic_A ] };
key <AC05> { [ Cyrillic_pe, Cyrillic_PE, 0x01002248 ] };
key <AC06> { [ Cyrillic_er, Cyrillic_ER, 0x010020D7 ] };
key <AC07> { [ Cyrillic_o, Cyrillic_O ] };
key <AC08> { [ Cyrillic_el, Cyrillic_EL ] };
key <AC09> { [ Cyrillic_de, Cyrillic_DE, 0x01002300 ] };
key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] };
key <AC11> { [ Cyrillic_e, Cyrillic_E ] };
key <AB01> { [ Cyrillic_ya, Cyrillic_YA, 0x01002199 ] };
key <AB02> { [ Cyrillic_che, Cyrillic_CHE, 0x01002193 ] };
key <AB03> { [ Cyrillic_es, Cyrillic_ES, 0x01002198 ] };
key <AB04> { [ Cyrillic_em, Cyrillic_EM, 0x010020DE ] };
key <AB05> { [ Cyrillic_i, Cyrillic_I ] };
key <AB06> { [ Cyrillic_te, Cyrillic_TE, 0x010021C4 ] };
key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
key <AB08> { [ Cyrillic_be, Cyrillic_BE ] };
key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] };
include "level3(ralt_switch)"
};
Приведённый выше фрагмент описывался в предыдущем посте. Он определяет вариант раскладки и вряд ли кому-нибудь, кроме меня, подойдёт без изменений :-)
3. Пункты 3—6 не очень обязательны. Влияют, наверное, на видимость новой раскладки в каких-то конфигураторах с GUI — не проверял.
/usr/share/X11/xkb/rules/base.lst
найти строчку
dos ru: DOS
feo ru: Feo
4. /usr/share/X11/xkb/rules/evdev.lst
найти строчку
dos ru: DOS
feo ru: Feo
5. /usr/share/X11/xkb/rules/base.xml
найти текст:
<variant>
<configItem>
<name>dos</name>
<description>DOS</description>
</configItem>
</variant>
<variant>
<configItem>
<name>feo</name>
<description>Feo</description>
</configItem>
</variant>
6. /usr/share/X11/xkb/rules/evdev.xml
найти текст:
<variant>
<configItem>
<name>dos</name>
<description>DOS</description>
</configItem>
</variant>
<variant>
<configItem>
<name>feo</name>
<description>Feo</description>
</configItem>
</variant>
7. А этот пункт вообще не знаю — нужен или нет.
/usr/share/console-setup/KeyboardNames.pl
Найти текст:
'ru' => {
'Bashkirian' => 'bak',
'Chuvash' => 'cv',
'Chuvash Latin' => 'cv_latin',
'DOS' => 'dos',
'Feo' => 'feo',
8. /etc/default/keyboard
изменить строку
XKBLAYOUT="us,ru"
XKBLAYOUT="us,ru(feo)"
9. Зайти в консоль, там
setupcon
10. Опробовать результат в консоли (в Иксах - после команды udevadm trigger --subsystem-match=input --action=change) Быть готовым к тому, что дополнительная секция клавиатуры с numlock'ом и прочим временно (до перезагрузки) отвалится.
11. Если что-то не получится и потребуется повторить - перед запуском setupcon сделать
touch /etc/default/keyboard.
12. Перезагрузиться и проверить результат.
В Дебиане порадовало то, что одна и та же раскладка может легко использоваться и в Иксах, и в консоли. Не порадовало то, что вместо одного или даже нуля есть как минимум 5 списков раскладок.