blogs/cmm

September 6, 2008

объясните мне на пальцах, пожалуйста

[если этот пост вообще кому-либо интересен, то только так называемым “программистам”]

вот есть операционная-система-плюс-оконная-оболочка типа “виндоуз”.
а на ней у меня тут бежит так называемый “X Server”, являющийся (скажем, для простоты) оконной оболочкой гораздо другого типа.  данная конкретная реализация X (XMing) умеет показывать окошки X-приложений так, что оконная оболочка “виндоуз” не видит ни малейшей разницы между своими “родными” окошками и окошками X-приложений.  и это не смотря на то, что X-приложения не имеют ни малейшего понятия о том что их окна показываются оболочкой “виндоуз”; с их точки зрения их окна просто занимают часть прямоугольника определённого размера, умеющего показывать цвета определённой глубины (прямоугольник называется “screen”, кажется).  so far, so good.

оконные оболочки, однако же, предоставляют приложениям не только прямоугольный массив пикселей для рисования окошек, но и средства интеракции с пользователем, типа клавиатур и мышей.  сигналы мыши из под “виндоуз” передаются X-приложениям без нареканий, а вот с нажатиями на кнопки клавиатуры есть проблема: в окошках X-приложений не получается обычным для “виндоуз” образом переключать раскладки.

при попытке разобраться я нашёл способы устанавливать практически произвольные раскладки для X-приложений (с помощью старого доброго xmodmap, или нового злого xkb).  чего я категорически не нашёл, так это способа сказать X-server’у “читай клавиши, получаемые от виндоуз, и не умничай”.  я вижу два общих направления для объяснения данного досадного обстоятельства:

1. это технически невозможно, поскольку базовые модели работы с клавиатурой в X и в “виндоуз” категорически не совместимы друг с другом.

2. ни у кого не дошли руки до реализации столь эзотерической возможности.

к сожалению, я совершенно не в теме: я не знаю как работает с клавиатурой “виндоуз”, и я не знаю как работает с клавиатурой X.  но хотелось бы как максимум заставить X не умничать, а как минимум понять почему это невозможно.  никто не в курсе?

RSS feed | Trackback URI

11 Comments »

Comment by pesec@livejournal |Link
2008-09-06 13:11:25

Нет такого понятия “не умничай”. Где-то всё же должен быть прописан маппинг. Может, в конфигурации X-server’a нужно поменять тип клавиатуры и установки.
Может, в xmodmap/xkb.
В общем случае трудно сказать. Нужно конкретно знать, какое “умничанье” вам мешает.

Comment by cmm |Link
2008-09-06 13:23:05

Нужно конкретно знать, какое “умничанье” вам мешает.

ну вот хотелось бы, грубо говоря, чтобы если я нажал Alt-Shift а потом клавишу с русской буквой “з”, то чтобы X-клиент не увидел Alt-Shift (как у них уже сегодня нет шансов увидеть, скажем, Ctl-Alt-Delete — и ничего, не жужжат), но зато потом увидел бы Cyrillic_Ze (или как этот keysym называется…).

иметь секес с xmodmap/xkb мне категорически не хочется, поскольку я уже настроил клавиатуру в виндоуз и не хотел бы возвращаться к этой теме.  собственно, это является мотивацией для данного поста.

Comment by pesec@livejournal |Link
2008-09-06 14:25:51

Во-первых, “Alt-Shift” и “Shift-Alt” могут восприниматься по-разному. Я так понимаю, что это баг.
Во-вторых, если таки хотите решить проблему, то какие-то шаго сделать придётся. Например, сконфигурировать модуль xkeyboard (http://en.wikipedia.org/wiki/X_keyboard_extension#External_links, http://tldp.org/HOWTO/Thai-HOWTO-2.html#ss2.2) Начать лучше с http://www.charvolant.org/~doug/xkb/html/node6.html.
Если хотите без секса, то уж извините, буду воспринимать этот ваш пост как субботнее бухтение; каждый имеет право побухтеть.

Comment by cmm |Link
2008-09-06 15:56:27

мнээ…
я не то чтобы хотел совсем избежать работы, а просто не хотел бы прописывать раскладки по второму (третьему, четвёртому) разу, поскольку типа всё естество бунтует.
ну и бухтим тоже, а как же. :)

линки типа “Unreliable guide” радуют офигительно, кстати.  “и так у них всё”.

 
 
Comment by pesec@livejournal |Link
2008-09-06 14:28:01

Во-первых, “Alt-Shift” и “Shift-Alt” могут восприниматься по-разному. Я так понимаю, что это баг.
Во-вторых, если таки хотите решить проблему, то какие-то шаго сделать придётся. Например, сконфигурировать модуль xkeyboard (http://en.wikipedia.org/wiki/X_keyboard_extension#External_links, http://tldp.org/HOWTO/Thai-HOWTO-2.html#ss2.2) Начать лучше с http://www.charvolant.org/~doug/xkb/html/node6.html.

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

 
 
 
Comment by sova@livejournal |Link
2008-09-06 13:15:36

Если я что-то понимаю (что не факт), то X-Server посылает (туда, куда он посылает) scan-code, т.е. некую «физическую» низкоуровневую характеристику нажатой кнопки, в обход всех остальных механизмов (раскладки и т.п.).

Так что модели не то что несовместимы, а существуют как-то параллельно и независимо.

Так мне кажется.

Comment by cmm |Link
2008-09-06 16:29:47

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

впрочем, юниксоиды вообще привыкли и любят конфигурировать среду, судя по всему.

интересно, как с этим обстоит дела у Эппла — там, вроде, есть втроенный X-сервер.  неужели народ тоже с xkb сношается?

 
 
Comment by stas@livejournal |Link
2008-09-07 01:18:54

Мне всегда казалось, что X получает scancode, a потом из него с помощью карты производит keysym. Я думаю, твой Xming получает от виндовса scancode (при это виндовс, ясное дело, имеет право некоторые коды никому не показывать, а кушать самому) и передает его X-у. Поэтому заставить его получать то, что видит программа в виндовсе, будет трудновато - для начала, не факт, что это вообще изображается в одних и тех же понятиях. Но даже если да, то не факт, что в протоколе X есть этому место…

Comment by cmm |Link
2008-09-07 12:02:48

очень похоже на то, увы.

 
Comment by 9000@livejournal |Link
2009-09-20 00:27:31

Наверное, эту проблему можно решить через input mode. Скажем, ни xmodmap, ни какое-либо иксовое приложение у меня не знает про ввод по-японски, но есть прослойка в виде SCIM, которая переводит сканкоды мимо xmodmap в нужные буквы и иероги. Аналогичная прослойка могла бы читать от несколько расширенного X-сервера прямо готовые keysym-ы чужой ОС и отдавать приложениям, зато неподходящие нажатия клавиш фильтровать.
Но, видимо, никто не сподобился написать.

Comment by cmm |Link
2009-09-20 09:15:56

и вряд ли сподобится, хотя какой-нибудь японец вполне может удивить. :)

 
 
 

You must be logged in to post a comment.

Or use your OpenID:

Trackback responses to this post

Powered by WordPress