>Все оказываеться просто(только докапываться долго): в Thinstantion используетсься откомпилированная раскладка клавиатуры Thinstation-2.2/packages/keymaps-ru/x-common/lib/kmaps/xkb/ru.xkm
>
>Необходимо выполнить xkbcomp -xkm $DISPLAY
>Тогда получишь в текущем каталоге текушую раскладку с твоими переключателями (xkbcomp идет
>с системой). Достаточно переименовать server-0.xkm в ru.xkm и заменить стандартный, чтобы
>все заработало как у тебя в системе.
>Наткнулся на две проблемы:
>1) Не переключается дополнительная клавиатура в цифры клавишей NumLock
>решил не искать причину а просто сохранил раскладку в неоткомпилированном виде (xkbcomp
>-xkb $DISPLAY) отредактировал вручную заменив PgUp PgDown ... на цифры и
>откомпилировал (xkbcomp server-0.xkb). Потерял при этом возможность набирать не цифры.
>2) При переключении в русскую раскладку rdesktop не передает серверу нажатия клавиатуры
>
>Не очень корректное решение но просто повесил у клиента переключатель на правый
>контрол. При этом способ переключения не пересекается ни с одним из
>серверов и хорошо еще и тем что двухклавишные комбинации в Thinstation
>срабатывают не всегда. Проблема с NumLock поправима менее радикальными средствами. Оригинальная откомпилированная раскладка клавиатуры работает с NumLock нормально, но:
1) содержит досовую (а не winkeys) раскладку русских букв,
2) содержит только временный переключатель на другую раскладку (правый alt) и не содержит какого либо постоянного переключателя.
правка заключается с следующих шагах
cd Thinstation-2.2/packages/keymaps-ru/x-common/lib/kmaps/xkb/
xkbcomp -xkb ru.xkm
применяем следующий патч на ru.xkb
------------------------------------------------------------------
diff -Nupr orig/ru.xkb new/ru.xkb
--- orig/ru.xkb 2007-03-18 23:04:36.604159000 +0300
+++ new/ru.xkb 2007-03-18 22:52:34.000000000 +0300
@@ -851,24 +851,18 @@ xkb_symbols "en_US(pc105)+ru" {
key <AE03> { [ 3, numbersign ] };
key <AE04> {
symbols[Group1]= [ 4, dollar ],
- symbols[Group2]= [ 4, asterisk ]
- };
- key <AE05> {
- symbols[Group1]= [ 5, percent ],
- symbols[Group2]= [ 5, colon ]
+ symbols[Group2]= [ 4, semicolon ]
};
+ key <AE05> { [ 5, percent ] };
key <AE06> {
symbols[Group1]= [ 6, asciicircum ],
- symbols[Group2]= [ 6, comma ]
+ symbols[Group2]= [ 6, colon ]
};
key <AE07> {
symbols[Group1]= [ 7, ampersand ],
- symbols[Group2]= [ 7, period ]
- };
- key <AE08> {
- symbols[Group1]= [ 8, asterisk ],
- symbols[Group2]= [ 8, semicolon ]
+ symbols[Group2]= [ 7, question ]
};
+ key <AE08> { [ 8, asterisk ] };
key <AE09> { [ 9, parenleft ] };
key <AE10> { [ 0, parenright ] };
key <AE11> { [ minus, underscore ] };
@@ -939,7 +933,7 @@ xkb_symbols "en_US(pc105)+ru" {
symbols[Group2]= [ Cyrillic_hardsign, Cyrillic_HARDSIGN ]
};
key <RTRN> { [ Return ] };
- key <LCTL> { [ Control_L ] };
+ key <LCTL> { [ Control_L, ISO_Prev_Group ] };
key <AC01> {
type= "ALPHABETIC",
symbols[Group1]= [ a, A ],
@@ -1000,8 +994,14 @@ xkb_symbols "en_US(pc105)+ru" {
symbols[Group1]= [ grave, asciitilde ],
symbols[Group2]= [ Cyrillic_io, Cyrillic_IO ]
};
- key <LFSH> { [ Shift_L ] };
- key <BKSL> { [ backslash, bar ] };
+ key <LFSH> {
+ type= "PC_BREAK",
+ symbols[Group1]= [ Shift_L, ISO_Prev_Group ]
+ };
+ key <BKSL> {
+ symbols[Group1]= [ backslash, bar ],
+ symbols[Group2]= [ backslash, slash ]
+ };
key <AB01> {
type= "ALPHABETIC",
symbols[Group1]= [ z, Z ],
@@ -1047,8 +1047,14 @@ xkb_symbols "en_US(pc105)+ru" {
symbols[Group1]= [ period, greater ],
symbols[Group2]= [ Cyrillic_yu, Cyrillic_YU ]
};
- key <AB10> { [ slash, question ] };
- key <RTSH> { [ Shift_R ] };
+ key <AB10> {
+ symbols[Group1]= [ slash, question ],
+ symbols[Group2]= [ period, comma ]
+ };
+ key <RTSH> {
+ type= "PC_BREAK",
+ symbols[Group1]= [ Shift_R, ISO_Next_Group ]
+ };
key <KPMU> {
type= "CTRL+ALT",
symbols[Group1]= [ KP_Multiply, XF86_ClearGrab ]
@@ -1116,7 +1122,10 @@ xkb_symbols "en_US(pc105)+ru" {
key <KP2> { [ KP_Down, KP_2 ] };
key <KP3> { [ KP_Next, KP_3 ] };
key <KP0> { [ KP_Insert, KP_0 ] };
- key <KPDL> { [ KP_Delete, KP_Decimal ] };
+ key <KPDL> {
+ symbols[Group1]= [ KP_Delete, KP_Decimal ],
+ symbols[Group2]= [ KP_Delete, KP_Separator ]
+ };
key <SYRQ> {
type= "PC_SYSRQ",
symbols[Group1]= [ Print, Sys_Req ]
@@ -1144,7 +1153,7 @@ xkb_symbols "en_US(pc105)+ru" {
key <INS> { [ Insert ] };
key <DELE> { [ Delete ] };
key <KPEN> { [ KP_Enter ] };
- key <RCTL> { [ Control_R ] };
+ key <RCTL> { [ Control_R, ISO_Next_Group ] };
key <PAUS> {
type= "PC_BREAK",
symbols[Group1]= [ Pause, Break ]
------------------------------------------------------------------
и компилируем его снова
xkbcomp -xkm ru.xkb
можно собирать thinstation. Раскладки будут переключаться по Ctrl+Shift и NumLock прекрасно работать.
PS естественно, что в конфиге надо поставить KEYBOARD_MAP=ru
PPS работа с rdesktop в таком варианте не проверялась