Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Проблемма с клавиатурой в Thinstation 2.1

Ответить
Настройки темы
Проблемма с клавиатурой в Thinstation 2.1

Новый участник


Сообщения: 48
Благодарности: 1

Профиль | Отправить PM | Цитировать


Сделал терминалы на базе Thinstation 2.1 rc1
Подключаюсь к серверу Win2003

при переключении языка ввода по левому Alt+Shift может возникать эффект залипания клавиши Alt. Нормально работает только при отчётливом алгоритме переключения, т.е.:
- нажимаем Alt
- нажимаем Shift
- отпускаем Shift
- отпускаем Alt

Так же может возникнуть эффект залипания левой клавиши <Win> (она же <Start> - слева от Alt).

Лечится нажатием залипшей клавиши.


Я выявил следующие закономерности:
эффект залипания наблюдается, если при компиляции образа включать package keymaps-en_us

если включать package keymaps-ru - вдобавок вообще перестаёт работать клавиша с русской точкой <.>

если НЕ включать вообще никакой пакет из раздела Keyboard layouts, эффекта залипания не происходит, но при этом отрубаются курсоры, NumPad и шесть кнопок над курсорами (Ins, Del, Home....etc)
Вероятно, для терминала пакеты раскладок не нужны - на сервер просто отправляется код клавиши? А раскладки нужны только для работы в режиме лёгкой станции (blackbox, icewm + FireFox)?
Из-зи чего тогда отрубается половина клавишь?

К сожалению, я только начинаю осваивать Linux.
Если знающие люди подскажут хотябы в каком направлении копать и что читать, думаю, с проблемой разберусь.
Отчёт напишу, разумеется

Отправлено: 03:10, 13-06-2005

 

Новый участник


Сообщения: 48
Благодарности: 1

Профиль | Отправить PM | Цитировать


Борюсь с багами CapsLock.
Симптомы:
При работе в терминале, при нажатом CapsLock следующие буквы печатаются строчными:
Цитата:
х ъ ж э б ю
Симптомы явно указывают, что бага случается с типами клавиш "non alphabetic"
Для примера выдержка из декомпилированного файла Thinstation-2.1\packages\keymaps-ru\x-common\lib\kmaps\xkb\ru.xkm:
Код: Выделить весь код
key <AB07> {
        type= "ALPHABETIC",
        symbols[Group1]= [               m,               M ],
        symbols[Group2]= [ Cyrillic_softsign, Cyrillic_SOFTSIGN ]
    };
    key <AB08> {
        type[group2]= "ALPHABETIC",
        symbols[Group1]= [           comma,            less ],
        symbols[Group2]= [     Cyrillic_be,     Cyrillic_BE ]
    };
Клавиша "M" относится к группе "ALPHABETIC" вне зависимости от раскладки (русской или английской).
Следующая клавиша в этом ряду относится к группе "ALPHABETIC" только для русской раскладки: type[group2]= "ALPHABETIC"

На самом деле при обычно компиляции образа я использую только английскую раскладку (компилю с en_us).
Если компилить с русской - добавляется ещё один баг: перестаёт работать русская точка.

Насколько я понял принцип работы клавиатуры вThinstation, обработка сигналов происходит следующим образом:
  • по идее клавиатура работает в режиме K_RAW, т.е.
  • скан-коды в десятичном виде передаются X-серверу, который преобразует их сначала в keycodes, затем в буквенные символы ASCII-таблицы (английские или русские соответственно).
  • X-сервер передаёт буквы прикладному приложению - в нашем случае это rdesktop.
  • rdesktop производит обратное преобразование в скан-коды, но уже в шестнадцатиричный вид.
  • rdesktop отправляет скан-коды на сервер терминалов.

Есть одна странность:
номера скан-кодов в Thinstation смещены на +8.
Например:
согласно этой таблице клавиша "q" имеет сканкод 16 (в hex - 0x10).
В en_us.xkm она соответсвует скан-коду 24:
Код: Выделить весь код
<AD01> = 24;
......
key <AD01> {
        symbols[Group1]= [               q,               Q ],
        symbols[Group2]= [              at,     Greek_OMEGA ]
однако при обратном преобразовании в rdesktop всё становится на свои места:
Код: Выделить весь код
q 0x10 addupper
Скан-код есть скан-код. Он не зависит от того, какая буква и в какой раскладке была нажата. Это наглядно видно в выдержке из \Thinstation-2.1\packages\keymaps-ru\rdesktop\lib\kmaps\keymaps\ru:
Код: Выделить весь код
semicolon 0x27
colon 0x27 shift
Cyrillic_zhe 0x27 altgr
Cyrillic_ZHE 0x27 shift altgr
Все четыре варианта преобразуются в один и тот же скан-код.
Cервер терминалов уже сам решает какой символ вывести на печать в зависимости от включённой раскладки и состояния модификаторов.
Значит собака порылась именно в состоянии модификатора CapsLock, который по каким-то причинам не доходит до сервера (причём это отностися только к группе "non ALPHABETIC").
Тут я застрял.
Не пойму, что где нужно исправлять.
Может в моих рассуждениях есть какая-то ошибка?

Вот, наткнулся на полезную доку: http://www.hupo.org.cn/docs/linuxdoc...keymapping.txt

Последний раз редактировалось Barvinok, 09-08-2005 в 18:55. Причина: Добавление


Отправлено: 14:21, 09-08-2005 | #31



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 48
Благодарности: 1

Профиль | Отправить PM | Цитировать


ОК.
Изучив матчасть, я понимаю, почему не работает CapsLock.
В конце файла Thinstation-2.1\packages\keymaps-en_us\rdesktop\lib\kmaps\keymaps\common есть прекрасные строки:
Код: Выделить весь код
#
# Inhibited keys
#
Caps_Lock 0x0 inhibit
Multi_key 0x0 inhibit
Согласно вышеприведённой доке
Цитата:
If flags is "inhibit", nothing will be sent to the server.
Я не могу понять почему он РАБОТАЕТ для группы alphabetic!

Отправлено: 19:39, 09-08-2005 | #32


Новый участник


Сообщения: 48
Благодарности: 1

Профиль | Отправить PM | Цитировать


Что-то приуныл всезнающий All...
А может слухи о его всезнании преувеличены?

Отправлено: 20:54, 10-08-2005 | #33


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Barvinok, спасибо за очень полезную работу. Если не сложно, ткни меня носом в ту "матчасть", которую ты изучал.

-------
С уважением, Figaro
http://romik.web.ur.ru


Отправлено: 12:53, 13-08-2005 | #34


Новый участник


Сообщения: 48
Благодарности: 1

Профиль | Отправить PM | Цитировать


Figaro
Преимущественно это труды Ивана Паскаля: http://pascal.tsu.ru/other/xkb/
http://doc.marsu.ru/Linux/xkb/programs.html
http://linux.ru.net/index.php?module=library&act…d=118∂=1004

Ну, а далее поиск по ключевым словам...

Отправлено: 16:00, 14-08-2005 | #35


Новый участник


Сообщения: 48
Благодарности: 1

Профиль | Отправить PM | Цитировать


Выяснил, почему рабтает CapsLock.
В описании типа "ALPHABETIC" имеется строка
Код: Выделить весь код
preserve[Lock]= Lock;
Вот что по этому поводу написано у Паскаля:
Цитата:
preserve[...]

Здесь требуются некоторые пояснения.
Напомню, что X-сервер передает прикладной программе сообщение о событии (нажатии/отпускании клавиши) в котором указывается скан-код клавиши и слово - "состояние" состоящее из набора модификаторов.

Для перевода этого сообщения в символ используются соответствующие подпрограммы Xlib.

Естественно, эти программы используют в качестве аргументов и скан-код и "состояние". Причем, отдельные подпрограммы (их там несколько) могут для принятия решения использовать не все модификаторы из "состояния".

Для того, чтобы избежать нежелательных эффектов, когда несколько таких подпрограмм обрабатывают сообщение последовательно, каждая подпрограмма обычно "вычищает" "использованные" модификаторы из слова-"состояния".

Но, в то же время, бывают ситуации, когда это нежелательно и какой-нибудь модификатор должен "приниматься во внимание" несколькими подпрограммами.

Для таких случаев и используется инструкция preserve - "сохранить" (имеется ввиду - сохранять модификатор в "состоянии").

В этой инструкции в квадратных скобках указывется модификатор (или комбинация модификаторов), такой же, как в одной из инструкции map[...], а справа от "присваивания" - модификатор (или набор модификаторов), который нужно сохранять.

Обратите внимание, что в скобках обязательно должна быть комбинация (или модификатор), точно такая же как и в одной из инструкций map[...].
Дело в том, что инструкция preserve[...] не является самостоятельной инструкцией, а представляет собой "продолжение" соответствующей инструкции map[...]. Поэтому, по "комбинации в скобках" XKB "сшивает" эти две инструкции.
А вот в правой части может быть только часть этих модификаторов (или даже один). То есть, в обработке будут учитываться все модификаторы из левой части, а сохраняться только те, которые указаны в правой.

Надо сказать, что в правой части инструкции preserve может, также, стоять и "None", что означает, что "ничего сохранять не нужно".
Но, поскольку "по умолчанию" и так ничего не сохраняется, то такие инструкции особого смысла не имеют и их можно не писать.

Отправлено: 16:07, 14-08-2005 | #36


Новый участник


Сообщения: 48
Благодарности: 1

Профиль | Отправить PM | Цитировать


Полезная вещь - маны...
Давеча скачал последний релиз rdesktop и почитал \rdesktop-1.4.1.tar\rdesktop-1.4.1\doc\keymapping.txt

Что пишут та...
Цитата:
Keyboard mapping
================
This release of rdesktop uses a new, portable keyboard mapping
implementation. It should hopefully work on all X11 systems. This new
implementation only looks at X11 keysyms: Not on (nonportable)
keycodes or modifier status. This means that rdesktop will obey your
local keyboard configuration. For example, if you have swapped
CapsLock and Control, rdesktop will use this mapping.

XKB is currently not used. It seems like a good idea to me, but since
some X servers (like Xvnc) does not support XKB, we still need to use
the plain old interface as well, at least.

There are still some small problems.

* CapsLock: CapsLock changes are never sent to the RDP
server. rdesktop does not know which keys that are modified by
CapsLock and which are not. So, the CapsLock indicator in Wordpad
etc will always be off.
Тем не менее CapsLock работает...
Как мы уже выяснили это происходит багодаря X-серверу (значит некое взаимодействие с xkb есть).
На http://sourceforge.net/tracker/?grou...66&atid=381349 я нашёл вот такой патч: disable XKB extension
Привожу его описание:
Цитата:
disable XKB extension
rdesktop will not translate altgr correctly (on solaris
at least) if XKB extension is enabled (+kb option for X
server). following patch will disable this extension
Т.е. глючило (и продолжает глючить?) расширение, отвечающее за взаимодействие с X-сервером (?).
Я не пойму, чему верить: rdesktop зависит от xkb или нет?

Отправлено: 23:00, 14-08-2005 | #37


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Опишу и я свою проблему, написал сначала в раздел по win2k,2003, но почитал эту тему и понял, что здесь собака порылась.
Так вот: тонкий клиент цепляется к серверу на Вин2003, при помощи thinstation, версия вроде 2.1, но могу ошибаться (не знаю, где посмотреть, собирал не я).
Сама проблема: Если язык по умолчанию ставить русский, то работает только до выхода из системы пользователя, после след. входа ставится опять английский. Правка реестра не помогает. Судя по всему проблема где-то в thinstation, но где.
В опциях rdesktop ставил -k ru_ru, но русский таки не поставился...

p.s. Если цепляться при помощи mstsc, то с языками по умолдчанию проблем нет.

Отправлено: 12:18, 13-07-2006 | #38


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


День добрый, нашел как проблема решается в Thinstation 5.1.
Нужно редактировать файл ~build/packages/x-common/lib/X11/xkb/symbols/altwin
В частности секцию
xkb_symbols "meta_alt" {
key <LALT> { [ Alt_L, Meta_L ]};
key <RALT> { type[Group1] = "TWO_LEVEL",
symbols[Group1] = [ Alt_R, Meta_R ] };
modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R};
};
Удаляем все упоминания Meta_L и Alt больше не залипает.

Отправлено: 13:10, 06-12-2012 | #39



Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Проблемма с клавиатурой в Thinstation 2.1

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
thinstation и экран загрузки DadushkaElf Сетевые технологии 2 02-11-2008 11:53
Прочее - ThinStation: не подымается X sysZero Общий по Linux 2 22-04-2008 11:43
RDP/Citrix/Term - Thinstation почему-то не видит thinstation.conf.user mitiya Сетевые технологии 2 29-03-2008 01:49
Thinstation и Cirruss Logic Derik Общий по Linux 0 16-04-2007 13:37
Проблема с Thinstation. Отзовитесь кто пользует Skochmar Сетевые технологии 2 14-04-2006 16:30




 
Переход