rdesktop vs Thinstation

rdesktop vs Thinstation
Последний месяц я был с головой погружен в развертывание новой старой системы, состоящей из "мэйнфрейма", сервер с Windows 2003 Server R2, и "тонких" клиентов, бездисковые машины с загрузкой по сети через механизм PXE линуксового дистрибутива Thinstation.

Когда гонял всю эту байду на испытательном стенде, все работало безукоризненно, но при развертывании в реале вполне закономерно всплыли некоторые грабли. Перечислю свои.
1) Порядка 30 машин были с ультрасовременными материнками, на которых стояли ультрасовременные гигабитные сетевухи да такие, что не поддерживались ядром (2.6.16.5) последней thinstation. Пришлось искать линуксовые дрова, компилить их и пересобирать ядро операционки, что достойно отдельного разговора.

Далее юзверьковые капризы:
2) Не работало колесико мышки. Помогает строчка в thinstation.conf
MOUSE_PROTOCOL=IMPS/2
вместо стандартного
MOUSE_PROTOCOL=PS/2
3) Не работали usb-мыши.
Собирать образ thinstation нужно с включенным параметром usb_hid и в thinstation.conf необходимо указать
MOUSE_DEVICE=/dev/input/mice

Если выше перечисленные проблемы достаточно просто решаются штудированием мануалов и хауту (я еще вернусь к этой теме), то последующие вызвали НЕДЕЦЦКИЕ танцы с бубном.

4) Глюки rdesktopa и всей этой дребанной клавиатурной раскладки в иксах.
При загрузке rdesktopa c поддержкой русской клавиатуры (rdesktop -k ru) все печаталось замечательно за исключением ТОЧКИ. Кроме того, при включенном Caps Locke буквы х,ъ,ж,э,б,ю отказывались выводиться в верхнем регистре. Если последнее еще как-то можно проигнорировать, то первое достаточно фатально.
Первое время приходилось грузится с раскладкой en_us, отчего терминальный сеанс в дребанной винде разумеется включался с английским языком по умолчанию. На деле это означало постоянное переключение на русский язык при запуске нового приложения. Отчего зверьки, разумеется, выли. Проблема Caps Lock сохранялась и при этой раскладке.
Далее. Случайное нажатие Shift+Alt (слева) приводило к фатальным последствиям. Клавиатура начинала глючить и выписывать такие кренделя, что пугался даже я, а о хрупкой психике пользователей и говорить не приходится. Поэтому в первую неделю я ходил по кабинетам и грозил отрубить руки тому, кто нажмет по запарке злополучную комбинацию. Надо ли говорить, что, не смотря на мои угрозы, люди с завидным упорством нажимали на эти дребанные кнопки?
Долгий и вдохновенный секс с яндексом и гуглем таки помог . (прошу прощения у чела, который победил эту проблему - ссылку на первоисточник я успешно проебал) . И вот тут впервые всплыло таинственное XKB...
Откровенно говоря, я так и не осилил всю глубину и мудрость данного пакета. Я довольствовался готовым, найденным в пучинах рунета решением. Итак, чтобы забыть о проблеме "левого shift-alt" ...
В папке thinstation/packages/keymaps-en_us/x-common/lib/kmaps/xkb находим файл en_us.xkm и запускаем

xkbcomp -xkb en_us.xkm

С удивлением обнаруживаем, что возле файла en_us.xkm чудесным образом появился файл en_us.xkb. Лезем в него.

Находим строчку
key <LALT> { [ Alt_L, Meta_l ] };
и меняем ее на
key <LALT> { [ Alt_L] };

Аналогично, для правого Alt
key <RALT> { [ Alt_R, Meta_r ] };
меняем на
key <RALT> { [ Alt_R] };


Далее, запускаем

xkbcomp -xkm en_us.xkb

И переходим в основной каталог thinstation, где запускаем

./build

Полученный образ выгружаем на наш ftp-сервер и радуемся отсутствию глюка Shift-Alt

Это все хорошо. Но остались проблемы с русской раскладкой, загружаемой rdesktopом, и Caps Lock...

После долгих и кровопролитных экспериментов с файлами en_us.xkb удалось победить проблему Caps Lock...

В файле en_us.xkb находим строчку

key <AC10> { [ semicolon, colon ] };

И меняем ее на

key <AC10> {
type= "ALPHABETIC",
symbols[Group1]= [ semicolon, colon ]
};

Понятно, что такое решение влечет за собой один побочный эффект - в английской раскладке Caps Lock начнет переключать двоеточие на точку с запятой и обратно, что не есть правильно. Но думаю это несмертельно, а обычные пользователи этого вообще не заметят, так как с указанными символами в английской раскладке практически не работают.

Аналогично поступаем с остальными "проблемными" клавишами, а именно с

key <AC11> { [ apostrophe, quotedbl ] };
key <AD11> { [ bracketleft, braceleft ] };
key <AD12> { [ bracketright, braceright ] };
key <AB08> { [ comma, less ] };
key <AB09> { [ period, greater ] };

Ну вот... Еще одна проблема решена...

Осталось одно - заставить rdesktop загружать русскую раскладку ru при запуске нового сеанса и КОРРЕКТНО с ней работать. Если я путанно изъясняюсь, то уточню - все предыдущие манипуляции проводились с раскладкой en_us, которая загружалась в rdesktop и требовала от пользователей постоянного переключения на русский язык.

Не буду описывать свои многодневные брутфорсовые атаки на rdesktop, xkb и весь этот маздай. Расскажу вам о том, чем сердце успокоилось.
Итак, чтобы сделать русский языком по умолчанию необходимо.... УДАЛИТЬ НАХРЕН ФАЙЛЫ С РУССКОЙ РАСКЛАДКОЙ!
Тупо заменяем файл ru.xkm (thinstation/packages/keymaps-ru/x-common/lib/kmaps/xkb) файлом en_us.xkm (предварительно подготовленным по выше описанной методе) и не менее тупо заменяем файл ru из каталога thinstation packages/keymaps-ru/rdesktop/lib/kmaps/keymaps/ на файл en из соответствующего каталога, слегка изменив его, а именно, заменив строчку
map 0x409
на
map 0x419

ВСЕ!

Наверняка есть более грамотное и элегантное решение, но в сети я его не нашел. А изучать такой пакет, как XKB, вкупе с клавиатурной суперпозицией в иксах у меня ни сил, ни желания не было.

 

 

 
Вход
close
РЕГИСТРАЦИЯ
Оставте поле пароля пустым, для автоматической генерации пароля
close
Восстановление пароля

close