LINUX.ORG.RU

x11vnc пропадают русские буквы

 ,


0

2

После соединения перестают работать некоторые русские буквы в удалённой машине. Причем в английской раскладке они работают. Если отключиться, а потом подключиться снова, эти буквы могут заработать, но могут перестать работать другие буквы.

«Не работают буквы» - т.е. когда я нажимаю на клавиатуре клавишу-с-буквой, то ничего не происходит (в любой программе на удалённом компьютере). На локальном компьютере текст набирается нормально.

Что надо донастроить или отключить?

Вот тут юзер спрашивал тоже самое, но ему так и не смогли помочь - vinagre->x11vnc пропадают русские буквы

Глянул исходники. массив ограничен 256-ю кодами.

Этот массив почти полностью заполнен после запуска x11vnc, в массив записываются коды для первых 28 символов и после этого добавлять новые невозможно.

Как можно решить эту проблему? Подозреваю что Xorg серверу надо скормить какую то таблицу русской кодировки.

Вообще есть 3 варианта решения:

1. Если возможно то дать Xorg`у таблицу русских символов (не знаю поможет ли, возможно ли это и в этом ли проблема) http://www.mobileread.com/forums/archive/index.php/t-194883.html внизу страницы есть что то похожее на решение проблемы. Но я ничего не понял.

2. Как то через командную строку указать коды русских символов при запуске x11vnc (я не нашел параметров в которые можно вставить коды русских символов)

3. Увеличить массив в исходниках x11vnc (keyboard.c) и пересобрать. (Как то костыльно, воспользуюсь этим вариантом только в крайнем случае)

drunkwolfs ()

Автор x11vnc молчит. Проблему исправил костылём внеся изменения в файл keyboard.c. Другого решения не нашел.

Исправленный keyboard.c: http://pastebin.com/upJ2Z848

Если есть другой способ решения проблемы прошу помочь.

added missing keysym to X display: 093 0x6f1 «Cyrillic_YA»
drunkwolfs ()
Ответ на: комментарий от drunkwolfs

TigerVNC: Разработчики сами говорят об этой ошибке.
Исправляется запуском
$setxkbmap ru
Хотя они пишут, что раскладку указывать не надо. Не получилось.
А так вот работает.
Можно прямо в терминале после подключения к Xvnc.

А можно в ~/.vnc/xstartup добавить строчку
setxkbmap ru

Но в последнем варианте не действовала уже латинская «m».

doc/keyboard-test.txt: «We currently have a limitation in Xvnc where it can run out of symbols, resulting in nothing being sent to the applications. Just run setxkbmap with any layout to reset the symbol table.»

Может и для x11vnc сработает...

mukhin ()
Ответ на: комментарий от mukhin

Решение валяется прямо под ногами, а именно в man setxkbmap (в самом конце). Для того чтобы освободить место в таблице трансляции (или как она называется), нужно удалить ненужное из одного из layout'ов. Для себя сделал так: setxkbmap -layout us -print | sed -e 's,\+inet[^+«],,' | xkbcomp - $DISPLAY Пояснение: для клавиатуры pc105 добавляется поддержка мультимедийных клавиш, которые занимают все свободное место в таблице трансляции, а таким способом мы их убираем. можно это запускать только для VNC-сессии.

anonymous ()
Ответ на: комментарий от anonymous

Заработало!

Всяческие благодарности anonymous!
Только после ] поставил *
а то там (evdev) не удалялся.
То есть на стороне сервера получился такой xstartup:

#!/bin/sh
#this is ~/.vnc/xstartup
setxkbmap -layout us -print | sed -e 's,\+inet[^+"]*,,' | xkbcomp - $DISPLAY

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
OS=`uname -s`
if [ $OS = 'Linux' ]; then
и т.д., и т.п.

mukhin ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.