The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Русский ввод с клавиатуры в X (Thinstation)"
Отправлено alexgo, 18-Мрт-07 23:23 
>Все оказываеться просто(только докапываться долго): в 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 в таком варианте не проверялась

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру