Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: syscons и XFree86 keyboard   Ivan Pascal   29 Sep 2003 16:41:40 
Архивное /ru.unix.bsd/1528a4a423d4.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional