[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
русская клавиатура и X11
Господа!
На ваш суд представляется русская раскладка клавиатуры для Xkb.
Стандартная и как её варианты: doskeys (то, что нарисовано на многих
клавиатурах), winkeys (то, что на многих других), и typewriter
(машинописная). Я думаю, что все три варианта сомнений не вызывают. Хотя
может быть спорным наличие одного из них или другого, но я постарался
учесть всё разнообразие мнений. Все прочие варианты суть вариации на
тему имеющихся. И вряд ли есть смысл наращивать число вариантов. Что
касается базовой (стандартной), насколько я понимаю, мы тоже пришли к
согласию.
Насчёт вариантов winkeys и typewriter единственный нерешённый вопрос --
стоит ли использовать numerosign или заменить его на numbersign, дабы в
большинстве случаев не возникала "мёртвая" клавиша. Я решил остановиться
на последнем. То есть, пусть будет "#".
Далее. Если мы принимаем данное за стандарт, то представляется возможным
использовать иксовую раскладку для генерации раскладок консольных. То
есть стандартной консольной, машинописной и пр. для различных кодировок,
включая юникодную. Тем самым, возможные расхождения между иксами и
консолью будут сведены к минимуму.
Для тестирования раскладок можно делать так:
XF86Config:
Section "Keyboard"
Protocol "Standard"
XkbRules "xfree86"
XkbModel "pc104"
XkbLayout "ru"
# XkbVariant "doskeys"
# XkbVariant "winkeys"
# XkbVariant "typewriter"
XkbOptions "grp:caps_toggle"
Все XkbVariant закомментарены -- стандартная раскладка, раскомментарив
один из вариантов его и получите.
--
Best regards,
Eugene
//
// Russian standard keyboard
// AEN <aen@logic.ru>
// Eugene Osintsev <gene@linuxave.net>
//
partial default alphanumeric_keys
xkb_symbols "basic" {
// Describes the differences between a very simple en_US
// keyboard and a very simple Russian keyboard
name[Group1]= "US/ASCII";
name[Group2]= "Russian";
key <LSGT> { [ less, greater ],
[ bar, brokenbar ] };
key <TLDE> { [ grave, asciitilde ],
[ Cyrillic_io, Cyrillic_IO ] };
key <AE01> { [ 1, exclam ],
[ 1, exclam ] };
key <AE02> { [ 2, at ],
[ 2, quotedbl ] };
key <AE03> { [ 3, numbersign ],
[ 3, numbersign ] };
key <AE04> { [ 4, dollar ],
[ 4, semicolon ] };
key <AE05> { [ 5, percent ],
[ 5, colon ] };
key <AE06> { [ 6, asciicircum ],
[ 6, comma ] };
key <AE07> { [ 7, ampersand ],
[ 7, period ] };
key <AE08> { [ 8, asterisk ],
[ 8, percent ] };
key <AE09> { [ 9, parenleft ],
[ 9, parenleft ] };
key <AE10> { [ 0, parenright ],
[ 0, parenright ] };
key <AE11> { [ minus, underscore ],
[ minus, underscore ] };
key <AE12> { [ equal, plus ],
[ equal, plus ] };
key <BKSL> { [ backslash, bar ],
[ backslash, bar ] };
key <AD01> { [ q, Q ],
[ Cyrillic_shorti, Cyrillic_SHORTI ] };
key <AD02> { [ w, W ],
[ Cyrillic_tse, Cyrillic_TSE ] };
key <AD03> { [ e, E ],
[ Cyrillic_u, Cyrillic_U ] };
key <AD04> { [ r, R ],
[ Cyrillic_ka, Cyrillic_KA ] };
key <AD05> { [ t, T ],
[ Cyrillic_ie, Cyrillic_IE ] };
key <AD06> { [ y, Y ],
[ Cyrillic_en, Cyrillic_EN ] };
key <AD07> { [ u, U ],
[ Cyrillic_ghe, Cyrillic_GHE ] };
key <AD08> { [ i, I ],
[ Cyrillic_sha, Cyrillic_SHA ] };
key <AD09> { [ o, O ],
[ Cyrillic_shcha, Cyrillic_SHCHA ] };
key <AD10> { [ p, P ],
[ Cyrillic_ze, Cyrillic_ZE ] };
key <AD11> { [ bracketleft, braceleft ],
[ Cyrillic_ha, Cyrillic_HA ] };
key <AD12> { [ bracketright, braceright ],
[Cyrillic_hardsign,Cyrillic_HARDSIGN ] };
key <AC01> { [ a, A ],
[ Cyrillic_ef, Cyrillic_EF ] };
key <AC02> { [ s, S ],
[ Cyrillic_yeru, Cyrillic_YERU ] };
key <AC03> { [ d, D ],
[ Cyrillic_ve, Cyrillic_VE ] };
key <AC04> { [ f, F ],
[ Cyrillic_a, Cyrillic_A ] };
key <AC05> { [ g, G ],
[ Cyrillic_pe, Cyrillic_PE ] };
key <AC06> { [ h, H ],
[ Cyrillic_er, Cyrillic_ER ] };
key <AC07> { [ j, J ],
[ Cyrillic_o, Cyrillic_O ] };
key <AC08> { [ k, K ],
[ Cyrillic_el, Cyrillic_EL ] };
key <AC09> { [ l, L ],
[ Cyrillic_de, Cyrillic_DE ] };
key <AC10> { [ semicolon, colon ],
[ Cyrillic_zhe, Cyrillic_ZHE ] };
key <AC11> { [ apostrophe, quotedbl ],
[ Cyrillic_e, Cyrillic_E ] };
key <AB01> { [ z, Z ],
[ Cyrillic_ya, Cyrillic_YA ] };
key <AB02> { [ x, X ],
[ Cyrillic_che, Cyrillic_CHE ] };
key <AB03> { [ c, C ],
[ Cyrillic_es, Cyrillic_ES ] };
key <AB04> { [ v, V ],
[ Cyrillic_em, Cyrillic_EM ] };
key <AB05> { [ b, B ],
[ Cyrillic_i, Cyrillic_I ] };
key <AB06> { [ n, N ],
[ Cyrillic_te, Cyrillic_TE ] };
key <AB07> { [ m, M ],
[Cyrillic_softsign,Cyrillic_SOFTSIGN ] };
key <AB08> { [ comma, less ],
[ Cyrillic_be, Cyrillic_BE ] };
key <AB09> { [ period, greater ],
[ Cyrillic_yu, Cyrillic_YU ] };
key <AB10> { [ slash, question ],
[ slash, question ] };
// End alphanumeric section
// Begin modifier mappings
modifier_map Shift { Shift_L };
modifier_map Lock { Caps_Lock, ISO_Lock };
modifier_map Control{ Control_L };
modifier_map Mod3 { Mode_switch };
};
partial alphanumeric_keys
xkb_symbols "doskeys" {
include "ru(basic)"
key <TLDE> { [ grave, asciitilde ],
[ parenright, parenleft ] };
key <AE03> { [ 3, numbersign ],
[ 3, slash ] };
key <AE04> { [ 4, dollar ],
[ 4, asterisk ] };
key <AE08> { [ 8, asterisk ],
[ 8, semicolon ] };
key <AE09> { [ 9, parenleft ],
[ 9, question ] };
key <AE10> { [ 0, parenright ],
[ 0, percent ] };
key <AB10> { [ slash, question ],
[ Cyrillic_io, Cyrillic_IO ] };
};
partial alphanumeric_keys
xkb_symbols "winkeys" {
include "ru(basic)"
key <AE05> { [ 5, percent ],
[ 5, percent ] };
key <AE06> { [ 6, asciicircum ],
[ 6, colon ] };
key <AE07> { [ 7, ampersand ],
[ 7, question ] };
key <AE08> { [ 8, asterisk ],
[ 8, asterisk ] };
key <BKSL> { [ backslash, bar ],
[ backslash, slash ] };
key <AB10> { [ slash, question ],
[ period, comma ] };
};
partial alphanumeric_keys
xkb_symbols "typewriter" {
include "ru(basic)"
key <TLDE> { [ grave, asciitilde ],
[ bar, plus ] };
key <AE01> { [ 1, exclam ],
[ numbersign, 1 ] };
key <AE02> { [ 2, at ],
[ minus, 2 ] };
key <AE03> { [ 3, numbersign ],
[ slash, 3 ] };
key <AE04> { [ 4, dollar ],
[ quotedbl, 4 ] };
key <AE05> { [ 5, percent ],
[ colon, 5 ] };
key <AE06> { [ 6, asciicircum ],
[ comma, 6 ] };
key <AE07> { [ 7, ampersand ],
[ period, 7 ] };
key <AE08> { [ 8, asterisk ],
[ underscore, 8 ] };
key <AE09> { [ 9, parenleft ],
[ question, 9 ] };
key <AE10> { [ 0, parenright ],
[ percent, 0 ] };
key <AE11> { [ minus, underscore ],
[ exclam, equal ] };
key <AE12> { [ equal, plus ],
[ semicolon, backslash ] };
key <BKSL> { [ backslash, bar ],
[ parenright, parenleft ] };
key <AB10> { [ slash, question ],
[ Cyrillic_io, Cyrillic_IO ] };
};