![]() |
Проблемма с клавиатурой в Thinstation 2.1
Сделал терминалы на базе 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. Если знающие люди подскажут хотябы в каком направлении копать и что читать, думаю, с проблемой разберусь. Отчёт напишу, разумеется |
Расскажите поподробне о Thinstation 2.1 rc1 и ваших терминалах
Как я понимаю, там используются X ? Тогда там может быть надо копать в настройки самих X-в тогда важно версия X-в На ALT вообще в Linux ничего не надо вешать - она по-умолчанию является клавишей Meta и на неё и так много повешено, лучше левый Ctrl+Shift |
Терминалы бездисковые. Грузятся с BootROM методом EtherBoot (если прошиваю сам) и PXE (если использую интегрированную сетевушку).
Образ Thinstation 2.2-beta1 (в первом посте я неверно указал версию) компилю из исходников под Alt Linux Master 2.4 Там действителько используется X-сервер. Вот выдержка из build.conf: Код:
# --- Xorg6R7.0 Насчёт левого Ctrl+Shift я понял. Счаз так и настроено всё. Но: во-первых, юзер может случайно задеть Alt или Start и его начнёт колбасить (а юзеров несколько сотен) во-вторых - просто хочется разобраться в третьих - данная проблемма пропадает, если не включать в образ Keyboard layouts - истина где-то рядом! Может отключить те функции, что навешаны на ALT в Linux? (зачем они мне, если единственная его функция - rdesktop?) |
Я не настолько глубоко знаю проблему, расскажу, что знаю
1 В настройках xorg.conf прописываются переключатели, работающие в X : Пример : Section "InputDevice" Identifier "Keyboard1" Driver "kbd" Option "AutoRepeat" "250 30" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "us,ru" Option "XkbVariant" ",winkeys" Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scrol EndSection (настройка на Ctrl+Shift, плюс индикация русской раскладки Scrool Lock) можно тут накрутить так ..... например - Alt- временное переключение на русские буквы (пока нажат, или замораживание переключений, пока второй ALT не нажмёшь и другие фокусы) - посмотрите что у вас 2 В KDE и Gnome (может и в других) можно включить ещё свои настройки (тогда надо отключать в X) 3 В консоли - где-то ещё (где навскидку не скажу, если надо, поищу) 4 По стандарту клавишей Meta является левый Alt (одновременное нажатие) и Esc (последовательное нажатие). Мету можно назначить практически на любую клавишу. Она может настраиваться точно в консоли, и вроде в X и оконных менеджерах |
В файле Thinstation-2.1\packages\xorg6\lib\X11\XF86Config-Xorg_Dual1.tpl есть разделы
Цитата:
Цитата:
Цитата:
Указанных настроек клавиатуры тоже нигде нет. Может просто добавить? Как я понял, vnc_keyboard.tpl нас не интересует. В первых двух можно попробовать что-то добавить. Но что? Я даже не знаю, что значит "Meta"... |
Цитата:
|
Так тут и про клавиатуру расписано :
http://thinstation.sourceforge.net/keyboard-guide.html |
Скажем так: XFree86 тоже используется (видимо для слабых машин)
В build.conf есть раздел Цитата:
Что касается http://thinstation.sourceforge.net/keyboard-guide.html ... Естественно я читал FAQ, прежде чем задавать вопросы. Там написано, что если кто-то решит проблемму, пусть расскажет всем (и сделает исправления в соответствующих CVR) |
Кажется, начинаю докапываться до зарытой собаки.
Все раскладки, как я понял, находятся в каталоге .\Thinstation-2.1\packages\ Разложены по соответствующим папкам: keymaps-ar keymaps-cs keymaps-da keymaps-de .....etc Заходим в \Thinstation-2.1\packages\keymaps-en_us\rdesktop\lib\kmaps\keymaps\ Видим три файла: common размером 2085 (байт) en_us размером 609 modifiers размером 298 Содержимое файла common (привожу частично, лишь то, что показалось интересным или непонятным) Цитата:
Содержимое файла en_us (IMHO ничего интересного) Цитата:
Цитата:
|
А вот такой вопрос - после того как система установлена, можно -ли посмотреть/изменить Linux параметры ?
|
Нашел откуда этот файл - из rdesktop, соответственно есть смысл поискать документацию по rdesktop.
(Т.е не привязываясь к конкретному дистрибутиву) |
Цитата:
В build.conf присутствуют такие стороки: Цитата:
Цитата:
Я понимаю, что парни специально менять ничего не стали: взяли rdesktop со шрифтами и алга... Скорее всего, там будет то же самое... Но посмотреть надо Мне интересно, кто-нить из присутствующих из установленного полноценного Linux пробовал работать в Win терминале? Были ли замечены подобные проблеммы? |
Скачал rdesktop-1.4.1.tar.gz
Как и предполагалось, отличий практически никаких. В common добавились кейкоды "мёртвых" клавишь Solaris: Цитата:
Цитата:
|
Как я понимаю, вы хотите сделать анологичное решение ?
http://www.ltsp.ru/ru/about Кстати, опыт ваших предшественников :) http://linux.opennet.ru/openforum/vs...3/4923.html#20 Правда пока ничего не нашёл по существу вашего вопроса. http://www.google.com/search?hl=ru&i...81%D 0%BA&lr= |
|
Да, статей по локализации много.
Но, боюсь, конкретно данный вопрос может помочь решить только человек, видящий картину в целом. Вероятно, происходит накладка: в Linux и Windows используются одинаковые клавиши. Ещё раз хочу обратить внимание, что если не включать в образ НИКАКИХ раскладок, эффект залипания пропадает - это может стать ключём! Может пойти от обратного? Решить проблеммы, которые возникают без раскладок? |
Цитата:
Цитата:
|
Я ж говорю....
Если компилить образ без раскладок, я совершенно спокойно работаю в терминале. Печатаю по русски и по английски. Переключаюсь без проблем - ни ALT ни Win не залипает. Но, блин, перестают работать курсоры и пр. - всё описано в первом посте Предлагая пойти от обратного, я имел ввиду как-то поправить эту самую дефолтную раскладку. Осталось только разобраться где править.... |
А если явно поставить в консоле английскую раскладку ? И попробовать в X-х забить две раскладки eng+rus ?
PS вы извините, я с терминалами не сталкивался :) Хочу понять как работает |
Работает просто:
|
Barvinok
Это-то как раз ясно :) Истина скрывается в нюансах :) |
Доброго времени суток. Сам столкнулся с такой проблемой (кстати, решение еще не найдено?), есть версия, что в rdesktop где-то прячется баг.
Поведение rdesktop: При "правильном" переключении раскладки по альт-шифт: 1. Нажимаем альт. Генерируется событие (прерывание) "нажат альт" 2. Нажимаем шифт. Генерируется событие "нажат шифт" 3. Отпускаем шифт. Генерируется событие "отпущен шифт" Здесь винда понимает, что нужно переключить раскладку. И переключает ее. 4. Отпускаем альт. Генерируется событие "отпущен альт" При "неправильном" переключении альт-шифт происходит следующее: 1. Нажимаем альт. Событие "нажат альт" 2. Нажимаем шифт. Событие "нажат шифт" 3. Отпускаем альт. Что видим? Винда переключила раскладку, как будто мы отпустили шифт. Возможно, здесь в rdesktop баг, и он посылает сообщение "отпущен шифт" 4. Отпускаем шифт. Снова винда переключает раскладку, значит снова "отпустили шифт". Замечаем, что после "неправильного" переключения раскладки у винды остается ощущение, что клавиша альт все еще прижата (например, при нажатии "H" вываливается справка, как по Alt+H). Лечится повторным нажатием клавиши альт. Проверил поведение штатного виндового десктоп-клиента. Оно адекватно: он в обоих случаях, при "правильном" и "неправильном" переключении, переключает раскладку один раз и не оставляет залипнутым альт. Как это лечить, я пока не выяснил, буду колупать дальше (скорее всего, с использованием сниффера) и надеюсь на вашу поддержку :) |
Figaro
Чувак, ты вкуриваешь.. Но ты не обратил внимание на один нюанс: если не включать при компиляции НИКАКИХ раскладок клавиатуры, то залипания не происходит. Значит проблемма кроется не в rdesktop, а в интерференции между rdesktop и раскладками (IMHO). Если что накапаешь - пиши обязательно: этой проблеммой масса людей изводится! Я, к сожалению, линукс только начал изучать. Что то путное смогу сказать не раньше, чем через пол-года. |
Забавно, дошел до туда же что и Barvinok, пытаюсь "заработать" стрелки и клавиши повыше или отключить залипание.
|
Радостно, что сниффер использовать не придется, а почти готовое решение проблемы описано вот тут: http://forum.opennet.ru/openforum/vs...ID1/57069.html. Насколько я понял, этот не баг, а такая иксовая особенность: интерпретировать нажатие альт+шифт как нажатие клавиши "мета".
Я тоже проверил, для нормальной работы thinstation нужно: 1. Запустить rdesktop (чтобы загрузились иксы) 2. Перейти во вторую свободную консоль (ctrl+alt+f2) 3. Там залогиниться (для дефолтной сборки пользователь root, а пароль pleasechangeme) и набрать команду Код:
DISPLAY=':0' xmodmap -e "keysym Alt_L = Alt_L" Ясно, что каждого так делать не заставишь, поэтому thinstation нужно пересобрать. Пересборкой thinstation я еще не занимался (нет времени), поэтому пока не нашел, чего можно исправить, но есть подозрение, что можно поправить в файле packages/rdesktop/etc/cmd/rdesktop.global с Код:
CMD_GLOBAL="rdesktop -k $KEYBOARD_MAP -f" Код:
CMD_GLOBAL="xmodmap -e 'keysym Alt_L = Alt_L'; rdesktop -k $KEYBOARD_MAP -f" |
К сожалению не сработало.
При загрузке образа самой последней строкой идёт Код:
//etc/cmd/rdesktop.global: 1: Syntax error: Unterminated quoted string Код:
CMD_GLOBAL="rdesktop -k $KEYBOARD_MAP -f" Вариант с комадой из второй консоли тоже не сработал: Код:
-sh: xmodmap: not found |
Собственно, я думаю проще перекомпилить саму раскладку, чем пытаться что-то править командами.
Мы выяснили, что проблемма заключается в раскладке X-сервера. Раскладка находится в \packages\keymaps-en_us\x-common\lib\kmaps\xkb\en_us.xkm (соответственно для каждой локали) Формат *.xkm - это раскладка, скомпилированная с помощью xkbcomp Дело за малым: нужно взять раскладку xkb, найти строки, типа Код:
keycode 0x40 = Alt_L Meta_L Код:
keycode 0x40 = Alt_L Alt_L Кажись, должно сработать. Так же я заметил попытки забороть эту проблемму в файле \packages\keymaps-en_us\rdesktop\lib\kmaps\keymaps\modifiers: Код:
Shift_R 0x36 |
Господа....
Можете пожать мою мужественную руку.. Я сам до сих пор в эйфории.. но это оправдано: сырость побеждена! Проблемма залипающего Alt в Thinstation решена мною только что! Делаем следующие манипуляции: 1. Берём бинарник раскладки клавиатуры X-сервера из дистрибутива Thinstation, например \packages\keymaps-en_us\x-common\lib\kmaps\xkb\en_us.xkm 2. С помощью утилиты xkbcomp конвертируем его в текстовый формат: Код:
xkbcomp -xkb en_us.xkm Код:
key <LALT> { [ Alt_L, Meta_L ] }; Получаем строку Код:
key <LALT> { [ Alt_L ] }; Код:
xkbcomp -xkm en_us.xkb 5. Компилим Thinstation и юзаем терминал без гиммороя. Фсё |
Пожалуй, напишу в FAQ на SourceForge...
А то не только в России люди мучаются. Нужно будет полечить ещё следющие баги: при нажатом CapsLock буквы <ю б ь х> и возможно ещё какие-то печатаются строчными (с Shift нормально) При компиляции с русской раскладкой не работает <. ?> (русская точка-английский вопрос). Буду разбираться. |
Barvinok
Удачи !!! :) |
Борюсь с багами CapsLock.
Симптомы: При работе в терминале, при нажатом CapsLock следующие буквы печатаются строчными: Цитата:
Для примера выдержка из декомпилированного файла Thinstation-2.1\packages\keymaps-ru\x-common\lib\kmaps\xkb\ru.xkm: Код:
key <AB07> { Следующая клавиша в этом ряду относится к группе "ALPHABETIC" только для русской раскладки: type[group2]= "ALPHABETIC" На самом деле при обычно компиляции образа я использую только английскую раскладку (компилю с en_us). Если компилить с русской - добавляется ещё один баг: перестаёт работать русская точка. Насколько я понял принцип работы клавиатуры вThinstation, обработка сигналов происходит следующим образом:
Есть одна странность: номера скан-кодов в Thinstation смещены на +8. Например: согласно этой таблице клавиша "q" имеет сканкод 16 (в hex - 0x10). В en_us.xkm она соответсвует скан-коду 24: Код:
<AD01> = 24; Код:
q 0x10 addupper Код:
semicolon 0x27 Cервер терминалов уже сам решает какой символ вывести на печать в зависимости от включённой раскладки и состояния модификаторов. Значит собака порылась именно в состоянии модификатора CapsLock, который по каким-то причинам не доходит до сервера (причём это отностися только к группе "non ALPHABETIC"). Тут я застрял. Не пойму, что где нужно исправлять. Может в моих рассуждениях есть какая-то ошибка? Вот, наткнулся на полезную доку: http://www.hupo.org.cn/docs/linuxdoc...keymapping.txt |
ОК.
Изучив матчасть, я понимаю, почему не работает CapsLock. В конце файла Thinstation-2.1\packages\keymaps-en_us\rdesktop\lib\kmaps\keymaps\common есть прекрасные строки: Код:
# Цитата:
|
Что-то приуныл всезнающий All...
А может слухи о его всезнании преувеличены? |
Barvinok, спасибо за очень полезную работу. Если не сложно, ткни меня носом в ту "матчасть", которую ты изучал.
|
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 Ну, а далее поиск по ключевым словам... |
Выяснил, почему рабтает CapsLock.
В описании типа "ALPHABETIC" имеется строка Код:
preserve[Lock]= Lock; Цитата:
|
Полезная вещь - маны...
Давеча скачал последний релиз rdesktop и почитал \rdesktop-1.4.1.tar\rdesktop-1.4.1\doc\keymapping.txt Что пишут та... Цитата:
Как мы уже выяснили это происходит багодаря X-серверу (значит некое взаимодействие с xkb есть). На http://sourceforge.net/tracker/?grou...66&atid=381349 я нашёл вот такой патч: disable XKB extension Привожу его описание: Цитата:
Я не пойму, чему верить: rdesktop зависит от xkb или нет? |
Опишу и я свою проблему, написал сначала в раздел по win2k,2003, но почитал эту тему и понял, что здесь собака порылась.
Так вот: тонкий клиент цепляется к серверу на Вин2003, при помощи thinstation, версия вроде 2.1, но могу ошибаться (не знаю, где посмотреть, собирал не я). Сама проблема: Если язык по умолчанию ставить русский, то работает только до выхода из системы пользователя, после след. входа ставится опять английский. Правка реестра не помогает. Судя по всему проблема где-то в thinstation, но где. В опциях rdesktop ставил -k ru_ru, но русский таки не поставился... p.s. Если цепляться при помощи mstsc, то с языками по умолдчанию проблем нет. |
День добрый, нашел как проблема решается в 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 больше не залипает. |
Время: 22:24. |
Время: 22:24.
© OSzone.net 2001-