Вход:  Пароль:  
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

Настройка дополнительных клавиш на клавиатуре BTC 9000A

  1. Если используется ядро 2.6.x, необходимо добавить в параметры загрузки ядра опцию atkbd.softraw=0. При использовании ядер 2.4.x этого не требуется – можно сразу переходить к пункту 2.
    Опция atkbd.softraw=0 необходима из-за особенностей обработки ввода с клавиатуры в ядрах 2.6.x. В этих версиях работа со всеми типами клавиатур (в том числе и с интерфейсом PS/2) идёт через подсистему ввода (input subsystem), причём по умолчанию обработка ввода идёт следующим образом:
    • Модуль atkbd преобразует скан-коды, поступающие от клавиатуры, в коды клавиш, используемые в Linux input subsystem (см. константы KEY_* в файле /usr/include/linux/input.h).
    • Модуль keyboard преобразует эти коды клавиш назад в скан-коды для совместимости со старыми программами, использующими режим ввода RAW (в частности, X именно таким образом получает события от клавиатуры).

    Проблема в том, что в таблице модуля atkbd не для всех возможных скан-кодов есть соответствующие коды KEY_* (в частности, из-за того, что скан-коды для дополнительных клавиш не стандартизованы). Можно добавить записи в эту таблицу, используя утилиту setkeycodes, однако при этом возникают новые проблемы:

    • Программа setkeycodes, входящая в пакет console-tools, устарела – она не поддерживает коды клавиш больше 127, а именно такие коды используются для мультимедиа-клавиш. Правильная версия setkeycodes есть только в пакете kbd, который, в свою очередь, доступен только в достаточно свежих срезах Сизифа.
    • Таблица для обратного преобразования кодов клавиш в скан-коды, имеющаяся в модуле keyboard, фиксирована; если при использовании setkeycodes выбирать коды KEY_* для клавиш в соответствии с функциями этих клавиш, во многих случаях оказывается, что скан-код, полученный в результате обратного преобразования, не совпадает с тем, который на самом деле выдаёт клавиатура. Если выполнить настройку X, пользуясь такими скан-кодами, получившийся файл конфигурации будет непригоден для систем с ядром 2.4.x, где преобразование скан-кодов не производится.

    При использовании опции atkbd.softraw=0 подобных проблем не возникает – запускать setkeycodes не нужно, а скан-коды, получаемые X через драйвер keyboard, соответствуют тем, которые реально посылает клавиатура.
    Перезагружать систему для установки atkbd.softraw=0 не обязательно – нужный режим можно установить командой:



    (нужно обязательно указывать опцию -n – без этой опции режим не устанавливается).


  2. Хотя описание дополнительных клавиш для клавиатуры BTC 9000A уже входит в стандартную конфигурацию XKB, коды клавиш там указаны неверно. Поэтому необходимо найти в файле /usr/X11R6/lib/X11/xkb/symbols/inet найти секцию xkb_symbols “btc9000a” и заменить её содержимое на следующее:


    Соответствующий багрепорт: https://bugs.freedesktop.org/show_bug.cgi?id=4280


  3. В файле /etc/X11/xorg.conf нужно в опции XkbModel указать модель клавиатуры btc9000a. Например, соответствующая секция может выглядеть так:


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


 
Файлов нет. [Показать файлы/форму]
Один комментарий. [Показать комментарии/форму]