URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID13
Нить номер: 301
[ Назад ]

Исходное сообщение
"Русский ввод с клавиатуры в X (Thinstation)"

Отправлено Andrey_T , 22-Сен-06 12:13 
Собрал Thinstation с поддержкой руссокй локали для работы в качестве RDP клиента и браузера. Установил ttf шрифты. Firefox правильно отображает русские странички, но ввода русских букв в X нет. В консоли по Ctrl+Shift раскладки переключает и выводит кракозябры (шрифты для консоли не ставил)
-----содержимое XF86Config-0 ----------------------------
Section "Files"
    RgbPath     "/usr/X11R6/lib/X11/rgb"
    FontPath    "/usr/X11R6/lib/X11/fonts/misc/"
    ModulePath  "/usr/X11R6/lib/X11/modules"
EndSection

Section "ServerFlags"
    Option      "blank time"    "10"
    Option      "standby time"  "20"
    Option      "suspend time"  "30"
    Option      "off time"      "60"
    Option      "Xinerama"      "On"
EndSection

Section "InputDevice"
    Identifier  "Mouse2"
    Driver      "mouse"
    Option      "Protocol"      "ImPS/2"
    Option      "Device"        "/dev/input/mice"
    Option      "ZAxisMapping"  "4 5"
    Option      "AlwaysCore"
EndSection
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        SubSection "Display"
                Viewport   0 0
                Modes "800x600"
                Depth     1
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Modes "800x600"
                Depth     4
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Modes "800x600"
                Depth     8
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Modes "800x600"
                Depth     15
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Modes "800x600"
                Depth     16
        EndSubSection
        SubSection "Display"
                Viewport   0 0
                Modes "800x600"
                Depth     24
        EndSubSection
EndSection
Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
EndSection
Section "Device"
        Option "swcursor" "On"
        ### Available Driver options are:-
        ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
        ### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
        ### [arg]: arg optional
        #Option     "HWcursor"                  # [<bool>]
        #Option     "NoAccel"                   # [<bool>]
        Identifier  "Card0"
        Driver      "vmware"
        VendorName  "VMware Inc"
        BoardName   "[VMware SVGA II] PCI Display Adapter"
        BusID       "PCI:0:15:0"
EndSection
Section "ServerLayout"
        Identifier     "X.org Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Mouse2"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
Section "Module"
        Load  "dbe"
        Load  "extmod"
EndSection
Section "InputDevice"
    Identifier  "Keyboard0"
    Driver      "kbd"
    Option      "AutoRepeat"    "400 30"
EndSection
Section "InputDevice"
    Identifier  "Mouse0"
    Driver      "mouse"
    Option      "Protocol"      "ImPS/2"
    Option      "Device"        "/dev/psaux"
    Option      "ZAxisMapping"  "4 5"
    Option      "Resolution"    "100"
EndSection
--------------------------XF86Config-0---------------------------

пробовал изменять
---------XF86Config-0---
...................................
Section "InputDevice"
    Identifier  "Keyboard0"
    Driver      "kbd"
    Option      "AutoRepeat"    "400 30"
    Option      "XkbModel" "pc104"
    Option      "XkbLayout" "us,ru(winkeys)"
    Option      "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
EndSection
..............................
----------------------
Не дает никаких результатов

В дистрибутиве использован Xorg 6.9
Изменить или включить новые модули не получиться они идут в виде бинарных пакетов. Можно изменять только конфигурационные файлы

Кто занимался русификацией иксов, посоветуйте куда смотреть


Содержание

Сообщения в этом обсуждении
"Русский ввод с клавиатуры в X (Thinstation)"
Отправлено Andrey_T , 26-Сен-06 18:55 
Все оказываеться просто(только докапываться долго): в 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 срабатывают не всегда.

"Русский ввод с клавиатуры в X (Thinstation)"
Отправлено Алексей , 14-Дек-06 23:54 
>Все оказываеться просто(только докапываться долго): в 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
>срабатывают не всегда.

Сам так долго искал что устал...Вот тебе ссылка мил человек :-)
http://www.ltsp.org.ru/files/4.1.1/ltsp-rdesktop-1.4.1-0-i38...


"Русский ввод с клавиатуры в 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 в таком варианте не проверялась


"Русский ввод с клавиатуры в X (Thinstation)"
Отправлено Cyrus_user , 04-Май-07 10:10 
>Проблема с NumLock поправима менее радикальными средствами. Оригинальная откомпилированная раскладка клавиатуры работает
>с NumLock нормально, но:
>1) содержит досовую (а не winkeys) раскладку русских букв,
>2) содержит только временный переключатель на другую раскладку (правый alt) и не
>содержит какого либо постоянного переключателя.
>
>правка заключается с следующих шагах
>
>cd Thinstation-2.2/packages/keymaps-ru/x-common/lib/kmaps/xkb/
>xkbcomp -xkb ru.xkm
>применяем следующий патч на ru.xkb
----------------------------------------
>и компилируем его снова
>xkbcomp -xkm ru.xkb
>
>можно собирать thinstation. Раскладки будут переключаться по Ctrl+Shift и NumLock прекрасно работать.
>
>
>PS естественно, что в конфиге надо поставить KEYBOARD_MAP=ru
>
>PPS работа с rdesktop в таком варианте не проверялась

в таком варианте в rdesktop не работает переключение ctrl-shift и стрелочки :(

я попытался поискать и помучить xkb самостоятельно, но сделать универсальный ru.xkm не смог. поправил скрипты, где в зависимости от сессии заменяется ru.xkm (пока так)

Может кому удалось сделать ru.xkm одинаково нормально работающий и для иксов, и для rdesktop в thinstation2.2?


"Русский ввод с клавиатуры в X (Thinstation)"
Отправлено uran235 , 24-Мрт-07 09:21 
если не секрет, то как добились того, что "Firefox правильно отображает русские странички"?

"Русский ввод с клавиатуры в X (Thinstation)"
Отправлено Andrey_T , 29-Мрт-07 16:19 
>если не секрет, то как добились того, что "Firefox правильно отображает русские
>странички"?

Добавил Windows ttf шрифты
Линуксовые настроить не смог
При этом русский текст отображает правильно только firefox


"Русский ввод с клавиатуры в X (Thinstation)"
Отправлено andrey , 04-Май-07 12:31 
все работает.

1. отключи xkb (Option  "XkbDisable") для работы rdesktop он не нужен
2. скопируй раскладку en-us в ru в файлах share/rdesktop/keymaps
3. замени map 0x409 на 0x419 в файле ru

и никаких проблем с клавиатурой на терминалах уже года 3 точно.


"Русский ввод с клавиатуры в X (Thinstation)"
Отправлено Cyrus_user , 10-Май-07 09:59 
>все работает.
>
>1. отключи xkb (Option  "XkbDisable") для работы rdesktop он не нужен
>
>2. скопируй раскладку en-us в ru в файлах share/rdesktop/keymaps
>3. замени map 0x409 на 0x419 в файле ru
>
>и никаких проблем с клавиатурой на терминалах уже года 3 точно.


если это ответ мне, то вы невнимательно прочитали проблему.
повторяю:
1. с дефолтным ru.xkm нет проблем в rdesktop. переключение crtl-shift, стрелки и numluck работают. Проблемы в Иксах, переключение на русский только при нажатой клавише R-Alt
2. с изменённом ru.xkm полученным как вышепреведённым патчем так и полученным xkbcomp :0 -xkm ru.xkm нет проблем в Иксах. В rdesktop проблема в переключении: нет ввода после переключения.
поэтому вопрос остаётся в силе, универсальный ru.xkm одинаково _нормально_ работающий как в Иксах так и в rdesktop



"Русский ввод с клавиатуры в X (Thinstation)"
Отправлено Cyrus_user , 10-Май-07 10:06 

>если это ответ мне, то вы невнимательно прочитали проблему.
>

сорри, поторопился с выводами. всё сделал сам. спасибо


"Русский ввод с клавиатуры в X (Thinstation)"
Отправлено novocel , 19-Окт-07 12:23 
>
>>если это ответ мне, то вы невнимательно прочитали проблему.
>>
>
>сорри, поторопился с выводами. всё сделал сам. спасибо

Вы-бы поделились с общественностью своими достижениями, чтобы нам не изобретать велосипед, а  просто славить Вас всякий раз используя ваши наработки. Пожалуйста.