Site logo

Настройка на клавиатурата на международен GNU/Linux

Това е едно просто решение за кирилизация на клавиатурата на френски ГНУ/Линукс. От една страна доста се лутах, докато разбера как се прави това, от друга, предполагам би било полезно за всеки с неамериканска клавиатура.

Забележка. В новите (след 2003 г.) дистрибуции, старият фонетичен конфигурационен файл е сменен с нов, подобен на описания тук. Така че можете да направите като обикновен потребител:

$ setxkbmap -layout "fr,bg" -variant ",phonetic" -option "grp:alt_shift_toggle"

Това вероятно ще ви е удобно. Ако искате обаче фина настройка на всички букви, четете надолу.


Тук съм сложил едни писма, които размених с Андрей Боянов, относно кирилизирането на френски Линукс, с френска клавиатура. Неговата помощ беше страшно полезна за мен, след дълго лутане и редактиране на грешен конфигурационен файл: предполагам, че тази информация може да е поучителна за някой друг, вероятно дори с различна клавиатура, италианска, испанска, немска...

Голямото откритие и поука за мен беше, че в ГНУ/Линукс е много просто и лесно да се настрои и да работи както ми е най-удобно. Можах наистина да си наглася всички букви, както съм си свикнал, а клавиатурата се държи като нормална френска, пак както съм си свикнал. Направо се родих!

Накратко проблема. Международните клавиатурни настройки, които са в Линукс, са зададени като "разлики" между американската и съответната локална клавиатури. Когато превключа на кирилица, част от клавишите са добре, но всички цифри и препинателни знаци са разместени, защото българската клавиатура е с американска подложка, различна от френската, дето ми е под ръцете. Невъзможно е да се работи. На повечето специалисти, които бях питал, никога не им се налага да пишат на френски и на български, обикновено само на английски и български, или пък само английски и френски.

Андрей ми посочи друг начин за настройка: за българския да се ползва активната клавиатурна подложка, в случая френската, като само се задават разликите за буквите - цифри и други знаци се коментират и си стоят както трябва. Много е лесно буквите да се нагласят както ви харесва : за някои Y е Й, за други Ъ, подобно за J, Q, W и т.н. Понеже този метод замества само буквите, а не местата на клавишите, може да се ползва без никакви промени за всички други езици.

Забележка. Превел съм писмата на кирилица, защото е по-красиво. Долният файл е всъщност моя, така както е в момента, защото съм сигурен, че работи.

Вижте също (за ГНУ/Линукс): XMMS на кирилица, неща за Firefox, iso2mkv, и други безполезни скриптове и програмите, които ползвам на страницата с препратки.

Писмото от Андрей

Здравей,

Petko Yotov wrote:

Здравейте, Андрей,

Видях, че сте писал до луг-бг относно АЗЕРТЙ-клавиатурата и писането на кирилица. От много време се опитвам да се справя с този проблем, обаче не успявам. Бихте ли споделили Вашия опит?

Ако направя както пише в луг-бг:

setxkbmap -layout "fr,bg" -variant ",phonetic" -option "grp:alt_shift_toggle"

има следните проблеми:

Така е, има си проблеми, въпреки, че иначе е страхотно, нали ? Инстинка фонетична кирилица по АЗЕРТЙ клавиатура ! 'А' си е където пише, че е :)))

За щастие решението, което съм намерил (може и да не е елегантно, но защо пък?) е лесно :

във файла /usr/X11R6/lib/X11/xkb/symbols/pc/bg съм коментирал всички редове, които започват с 'key <RALT>' - това оправя проблема с AltGr. Иначе бг клавиатурата го предефинира и всъщност нито едната от двете клавиатури не успява да го ползва, щото се получава конфликт.

В същия файл съм коментирал и всички редове, които съответстват на проблемните символи - ,?;.:/!§. Това ги кара да си стоят както са си на френската клавиатура. Аттачвам ти този файл да ги видиш промените и да пробваш дали така ти е удобно да пишеш. може би остават някои проблеми, ама все пак ...

Да не забравя - в /etc/X11/XF86Config-4 имам следните опции за клавиатурата :

 # Това е в /etc/X11/XF86Config-4, а ако
 # нямате такъв, в /etc/X11/XF86Config или в /etc/X11/xorg.conf

 Section "InputDevice"
    Identifier    "Generic Keyboard"
    Driver        "keyboard"
    Option        "CoreKeyboard"
    Option        "XkbRules"    "xfree86"
    Option        "XkbModel"    "pc105" # това е важно за клавишите '<' и '>'.
                                        # С PC104 ги няма там, където са на фр клавиатура
 #  Option        "XkbLayout"    "fr"
    Option        "XkbLayout"    "fr,bg"
    Option        "XkbVariant"    ",phonetic"
    Option        "XkbOptions"   "grp:alt_shift_toggle,grp_led:scroll"
 EndSection

Поздрави, Андрей

 // Това е в /usr/X11R6/lib/X11/xkb/symbols/pc/bg
 // в Xorg7 файлът е /usr/share/X11/xkb/symbols/bg
 partial alphanumeric_keys
 xkb_symbols "phonetic" {
   name[Group1]= "Cyrillic";
   key <TLDE> {   [ Cyrillic_che,      Cyrillic_CHE        ]    };
                                                   // това е малкото 2 горе вляво
   key <LatQ> {   [ Cyrillic_ya,       Cyrillic_YA         ]    };
   key <LatV> {   [ Cyrillic_ve,       Cyrillic_VE         ]    };
   key <LatE> {   [ Cyrillic_ie,       Cyrillic_IE         ]    };
   key <LatR> {   [ Cyrillic_er,       Cyrillic_ER         ]    };   // Р
   key <LatT> {   [ Cyrillic_te,       Cyrillic_TE         ]    };
   key <LatW> {   [ Cyrillic_hardsign, Cyrillic_HARDSIGN   ]    };   // Ъ
   key <LatU> {   [ Cyrillic_u,        Cyrillic_U          ]    };
   key <LatI> {   [ Cyrillic_i,        Cyrillic_I          ]    };
   key <LatO> {   [ Cyrillic_o,        Cyrillic_O          ]    };
   key <LatP> {   [ Cyrillic_pe,       Cyrillic_PE         ]    };
   key <AD11> {   [ Cyrillic_sha,      Cyrillic_SHA        ]    };   // Ш : circonflèxe - tréma
   key <AD12> {   [ Cyrillic_shcha,    Cyrillic_SHCHA      ]    };   // Щ : $ - £

   key <LatA> {   [ Cyrillic_a,        Cyrillic_A          ]    };
   key <LatS> {   [ Cyrillic_es,       Cyrillic_ES         ]    };
   key <LatD> {   [ Cyrillic_de,       Cyrillic_DE         ]    };
   key <LatF> {   [ Cyrillic_ef,       Cyrillic_EF         ]    };
   key <LatG> {   [ Cyrillic_ghe,      Cyrillic_GHE        ]    };
   key <LatH> {   [ Cyrillic_ha,       Cyrillic_HA         ]    };
   key <LatY> {   [ Cyrillic_shorti,   Cyrillic_SHORTI     ]    };   // Й, върху Y
   key <LatK> {   [ Cyrillic_ka,       Cyrillic_KA         ]    };
   key <LatL> {   [ Cyrillic_el,       Cyrillic_EL         ]    };
 //key <AC10> {   [ semicolon,         colon               ]    };
 //key <AC11> {   [ quoteright,        quotedbl            ]    };
   key <BKSL> {   [ Cyrillic_yu,       Cyrillic_YU         ]    };   // това е Мю (µ) - *

   key <LatZ> {   [ Cyrillic_ze,       Cyrillic_ZE         ]    };
   key <LatX> {   [ Cyrillic_softsign, Cyrillic_SOFTSIGN   ]    };   // ь, на хикс
   key <LatC> {   [ Cyrillic_tse,      Cyrillic_TSE        ]    };   // Ц
   key <LatJ> {   [ Cyrillic_zhe,      Cyrillic_ZHE        ]    };   // Ж
   key <LatB> {   [ Cyrillic_be,       Cyrillic_BE         ]    };
   key <LatN> {   [ Cyrillic_en,       Cyrillic_EN         ]    };
   key <LatM> {   [ Cyrillic_em,       Cyrillic_EM         ]    };
 //key <AB08> {   [ comma,             less                ]    };
 //key <AB09> {   [ period,            greater             ]    };
 //key <AB10> {   [ slash,             question            ]    };

 // End alphanumeric section

 //key <RALT> {   [ Alt_R,             Meta_R              ]    };
 };

От Петко: Моят сегашен файл всъщност е по-различен, защото вместо да поправям съществуващата секция xkb_symbols "phonetic", добавям нова, xkb_symbols "phonetic_intl". Заради това, във файла XF86Config или xorg.conf променям реда:

Option "XkbVariant" ",phonetic_intl" (там, дето е phonetic).

В моя файл също съм добавил и буквите от македонската и руската кирилица, Ј, Ѓ, Џ, Љ, Њ, Ѕ, Ќ, Ё, Ы, Э съответно на AltGr+ Й, Г, Ж, Л, Н, З, К, О, Ъ, Е (главни букви с AltGr+Shift+буква)

Изтегляне на моя ???/bg (работна версия, както аз я ползвам).

в Xorg7 файлът се казва /usr/share/X11/xkb/symbols/bg (ок. април 2006). В предните версии на X файлът се казваше /usr/X11R6/lib/X11/xkb/symbols/pc/bg.