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


29

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

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

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

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

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


Вы хотите решить эту проблему с помощью udev или у вас все в порядке с альтернативами? Я бы неохотно устанавливал неупакованные пакеты Debian udev в Ubuntu.
Jobin

любые альтернативы приветствуются =)
Дмитрий Белавенцев

Имеет ли эта помощь?
Jobin

Что же делает больше не поставляемая keymapутилита?
Мэтт

Я обновил свой учебник (на который вы ссылались), чтобы включить ответ ниже. Спасибо :-)
Теренс Иден

Ответы:


27

Если вы посмотрите на это, /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, вам может потребоваться перезагрузка. В некоторых случаях вам также необходимо перезагрузить компьютер.


Спасибо за ответ! hwdb.dреж пусто, rules.dсодержит только 3 файлы ( 70-persistent-cd.rules, 70-persistent-net.rules, README). Итак, вы имели в виду, что я должен создать новый файл? Или я должен иметь некоторые для редактирования?
Дмитрий Беловенцев

Да, вы должны создавать новый файл. Существующие правила клавиатуры хранятся, /lib/udev/hwdb.d/60-keyboard.hwdbно изменения к ним будут потеряны после обновлений udev.
Оли

2
к сожалению, не заставляет целевую кнопку работать
Дмитрий Белавенцев

1
@matt, вы можете поместить несколько псевдонимов, как здесь
user.dz

1
Вместо включения | отключения можно использовать udevadm trigger /dev/input/by-id/usb-Microsoft-*для запуска обновления
Александр Приймак

37

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*


9
Это правильный ответ для Ubuntu 16.04
Грег Дэн,

2
Спасибо. Похоже, что keyboard:определения больше не работают в Ubuntu 1604, и это должно быть evdev:. Существует даже сопоставление по умолчанию /lib/udev/hwdb.d/60-keyboard.hwdbдля модели 4000, которая сопоставляет их с zoomin/ zoomout- однако X полностью игнорирует события (xev ничего не показывает), поэтому вам все еще нужно изменить конфигурацию, подобную этой.
Wump

2
На b0003внешнем виде , как это шинно-специфичный (так что он может работать только в некоторых портах USB). Если что-то вроде b*v045Ep071D*работает, это может быть лучше.
Оли

3
Спасибо, это работает в Ubuntu 16.04 ( evdev:input:XXXвместо keyboard:usb:YYY). Вы также можете использовать другое отображение вместо pageup/ pagedown. Например, я использую scrollupи scrolldownсделать реальную прокрутку.
Мартин Грюбер

1
Работает и в Kubuntu 17.10
OOPMan

7

Исходное решение, опубликованное Оли, не работает для меня, но оно работает после того, как я изменил номера клавиш "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

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


Спасибо. Как ни странно, мне нужно было выполнить это изменение и сейчас, и после всего этого потребовался перезапуск (а не просто повторное включение).
Мэтт

у меня работал на Ubuntu 15.04. Благодарность!
Пьер

Это сработало для меня на Debian Jessie 8.5.
Николас

Я хочу купить экономичную клавиатуру, и мне любопытно, работает ли она с 16.04 LTS? Или там нет такой проблемы.
Арпад Хорват

4

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

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

Кстати: Up ​​/ Down по умолчанию в 18.04.
LinuxLuigi

1

Хорошее решение здесь , и я могу только добавить, что вы можете сопоставить ключи с неиспользованными ключами 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.xmlOpenBox 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>
...
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.