Сделайте ползунок масштабирования Microsoft Natural Ergonomic Keyboard 4000 и 7000 для прокрутки вверх и вниз в 14.04 (Trusty)

Я попытался использовать это руководство для работы переключателя прокрутки на Microsoft Natural Ergonomic Keyboard 4000. Но я столкнулся со следующей ошибкой:

sudo: /lib/udev/keymap: command not found

У меня есть версия Udev 204-5ubuntu20.2 (версия найдена в Trusty)

Я заметил, что эта версия не включает keymap инструмент. Но я замечаю, что больше udev версии ( которые доступны для Debian, например) включают этот инструмент.

Может ли кто-нибудь объяснить мне эту разницу? =) А что мне делать в этом случае - установить пакет из репозитория Debian?

5 ответов

Решение

Если вы посмотрите на /lib/udev/rules.d/60-keyboard.rules вы увидите, что все было запутано. Это всего лишь часть слияния udev с systemd, которое произошло.

Все аппаратные правила скомпилированы в двоичную аппаратную базу данных. Они следуют за действительно странным форматом. Существующие правила для клавиатур, которые поставляются с Udev, живут в /lib/udev/hwdb.d/60-keyboard.hwdb, Посмотрите на это, но не редактируйте его (обновления, вероятно, перезапишут его).

Чтобы добавить ваши собственные правила, мы создадим новый файл в /etc/udev/hwdb.d/ запустив sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb, Все, что вам нужно сделать, это вставить в следующем -

Если вы используете модель 4000:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown

Если вы используете модель 7000:

keyboard:usb:v045Ep071D*
 KEYBOARD_KEY_0c022d=pageup
 KEYBOARD_KEY_0c022e=pagedown

Это адаптировано из учебника, который вы опубликовали, поэтому вам может понадобиться настроить его на основе клавиатуры. смотреть на lsusb и убедитесь, что vendor:product код выше (как v####p####) верно. Это не сработает, если они не совпадают.

Как только вы закончите редактирование, перекомпилируйте hwdb что использует udev:

sudo udevadm hwdb --update

И тогда вам может понадобиться повторно подключить. Если это клавиатура PS/2, вам может потребоваться перезагрузка. В некоторых случаях вам также необходимо перезагрузить компьютер.

Ubuntu 15.10: у меня не было успеха с предыдущими ответами.

Я успешно использовал подход, аналогичный предыдущим - инструкции были упомянуты в /lib/udev/hwdb.d/60-keyboard.hwdb,

Я создал новый файл hwdb, используя sudo nano /etc/udev/hwdb.d/70-keyboard.hwdbсодержащий:

# Microsoft Natural Ergonomic Keyboard 4000 - переназначение увеличения / уменьшения на страницу вверх / вниз
evdev: вход:b0003v045Ep00DB*
 KEYBOARD_KEY_c022d= PageUp
 KEYBOARD_KEY_c022e= PageDown

после этого я бегу

sudo udevadm hwdb --update
sudo udevadm control --reload

и переподключил клавиатуру и все заработало.

Для модели 7000 используйте evdev:input:b003v045Ep071D*

Исходное решение, опубликованное Оли, не работает для меня, но оно работает после того, как я изменил номера клавиш "0c022d" а также "0c022e" в "c022d" а также "c022e", Я использую модель 4000, поэтому я не могу проверить, нужно ли такое же изменение для модели 7000.

Чтобы повторить ответ Оли, вот что я сделал: создать новый файл, запустив sudo nano /etc/udev/hwdb.d/61-keyboard-local.hwdb, Вставьте в файл следующие строки (для модели 4000):

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

После редактирования файла перекомпилируйте hwdb, который использует udev:

sudo udevadm hwdb --update

Затем подключите клавиатуру.

В добавление к ответу Оли, если вы хотите прокрутить строку, как на мыши, вы можете изменить pageup/pagedown на up/down в вашем пользовательском правиле. Подобно:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=up
 KEYBOARD_KEY_c022e=down

Хорошее решение здесь, и я могу только добавить, что вы можете сопоставить ключи с неиспользованными ключами X следующим образом:

$ cat /lib/udev/rules.d/95-keymap.rules
...
ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d katakana 0xc022e katakanahiragana
...

Собственные имена, чтобы использовать вместо katakana можно найти здесь.

После перезагрузки;-) вы можете проверить это zoomin а также zoomout ключи сопоставлены успешно, а также, чтобы узнать правильные имена ключей (для использования в rc.xml например, для OpenBox WM) xev:

$ xev
...
KeyRelease event, serial 46, synthetic NO, window 0x3c00001,
    root 0x291, subw 0x0, time 1492891, (-261,-61), root:(573,380),
    state 0x0, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
...

Теперь вы можете подключить новые ключи к совершенно произвольным действиям. В моем случае оконного менеджера OpenBox я использовал что-то вроде этого:

$ cat <whatever>/rc.xml
...
<keybind key="Katakana">
  <action name="Execute">
    <command>volume_up.sh</command>
  </action>
</keybind>
<keybind key="Hiragana_Katakana">
  <action name="Execute">
    <command>volume_down.sh</command>
  </action>
</keybind>
...
Другие вопросы по тегам