|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Ivan Pascal 2:5020/400 29 Sep 2003 16:41:40 To : Eugene Grosbein Subject : Re: syscons и XFree86 keyboard --------------------------------------------------------------------------------
On Sun, 28 Sep 2003 01:02:18 +0700, Eugene Grosbein wrote:
> 27 сен 2003, суббота, в 12:39 KRAST, Ivan Pascal написал(а):
>
> IP>> Это как?
> IP>> Чтобы иксы делали boot и halt?
> >> Чтобы не блокировали syscons'овую обработку, этого достаточно.
> >> Возможно это?
> IP> Если не переписывать syscons - нет.
>
> То есть, виноват только syscons? А много переписывать в нем надо?
А как оценить сколько переписывать? В строчках кода?
Хорошо, рассказываю подробнее.
В syscons можно выделить несколько шагов
- самый первый - читает скан-коды из "железа"
- потом эти коды слегка переделываются - обычные однобайтные скан-коды не
меняются, а extended (типа префикс 0xe0 и код) преобразуются в
однобайтный код
- вот теперь код транслируется через keymap, при этом
- если в таблице на эту клавишу назначен обычный символ (включая и
"контроловые"), то этот символ и выдается на следующий этап
- а вот если это специальный сивол, требующий какого-то действия
(всякие halt, debug или переключение screen'а), то они тут же и
выполняются
- ну и есть еще следующий этап, где всякие F1, F2 и так далее
преобразуются в esc-последовательности.
У этой многошаговой машины есть несколько "отводов". Любая программа,
с помощью ioctl'ов может заказать - с какого этапа она хотела бы брать
коды. Можно брать
- "сырые скан-коды" после первого этапа, тогда ессесно все последующие
шаги в syscons не выполняются
- "полусырые коды", те, что после второго этапа, но до интерпретации
keymap
- ну и наконец - полностью странслированные коды символов и
esc-sequences после последнего этапа. ТОлько в этом случае syscons
доходит до boot/halt/etc.
Xserver обычно берет с первго "отвода", то есть сырые скан коды, но
может брать и "полусырые" (если использовать не "встроенный" драйвер
keyboard, а "модульный" kbd, то надо только опцию соответсвующую
в XF86Config вписать). В любом случае до интерпретации keymap дело не
доходит. Брать же с последненго отвода нет смысла для иксов, потому как
здесь уже нет отделынх событий нажатие-отпускание, а только коды буковок.
А для иксов это существенно, если пойдут только нажатия (или только
отжатия), то все скривит.
Hу так вот. Hадо в syscons как-то разделить интерпретацию keymap,
чтобы был такой "отвод", что действия уже выполняются, а полусырые
скан-коды в буковки еще не превращаются. Вообще-то, в коде syscons
это делается в одном if'е. В смысле -
if спец-key то
большой switch для всех служебных кодов
else
просто вернуть код буковки
Кстати, если сделаете новый "отвод", то и иксы надо подправлять.
А много это или мало - мне оценить трудно. :)
----
Ivan Pascal
The XFree86 Project, developer, commiter.
--- ifmail v.2.15dev5
* Origin: Tomsk State University (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/1528a4a423d4.html, оценка из 5, голосов 10
|