Как заставить работать ползунок масштабирования Microsoft Natural Ergonomic Keyboard 4000 (и другие кнопки)?

Я использую Microsoft Natural Ergonomic Keyboard 4000 на Ubuntu 10.10. Работают мультимедийные клавиши (громкость, воспроизведение / пауза), а также кнопка "Почта" и "Калькулятор".

Теперь я хотел бы использовать ползунок масштабирования, если бы это было возможно, я хотел бы использовать прокрутку страницы с этим. Есть ли способ включить это?

5 ответов

Создать файл /etc/udev/rules.d/98-ms-ergo.rules со следующим содержанием:

ACTION=="remove", GOTO="keyboard_end"
KERNEL!="event*", GOTO="keyboard_end"
ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
SUBSYSTEMS!="usb", GOTO="keyboard_end"

SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"

ENV{ID_VENDOR}=="Microsoft", ENV{ID_MODEL_ID}=="00db", RUN+="keymap $name 0xc022d pageup 0xc022e pagedown"

GOTO="keyboard_end"

Это отобразит клавишу масштабирования на страницу вверх / вниз без изменения установленных файлов в /lib/udev,

После добавления вам просто нужно отключить и снова подключить клавиатуру, чтобы она начала работать.

На Xubuntu 13.10 (возможно, и на Ubuntu 13.10) то же самое можно сделать следующим образом:

Изменить сопоставления клавиш в /lib/udev/hwdb.d/60-keyboard.hwdb:

###########################################################
# Microsoft
###########################################################

# Microsoft Natural Ergonomic Keyboard 4000
keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_c022d=pageup
 KEYBOARD_KEY_c022e=pagedown

Бежать sudo udevadm hwdb --update

Перезагружать.

Чтобы настроить Microsoft эргономичную клавиатуру 4000, мы должны создать файл конфигурации, который содержит объявление клавиатуры и записи для сопоставления клавиш.

Для этого нужно определить три типа информации:

  • Тип клавиатуры
  • Ключ scancode которая является реальной клавишей на клавиатуре
  • Ключ name назначить желаемую функциональность выбранной клавише

Сначала найдите тип клавиатуры:

В терминале выполните следующую команду:

lsusb 

Выход определяет тип клавиатуры:

...
Bus 004 Device 022: ID 045e:00db Microsoft Corp. Natural Ergonomic Keyboard 4000 V1.0
...    

Появляется после ID, В этом случае это 045e:00db

Во-вторых, найдите скан-код и название ключа.

Чтобы определить их, мы используем evtest программа, которая регистрирует информацию о событии определенного устройства на терминале:

evtest

Если у вас нет программы, установите ее, выполнив следующую команду:

sudo apt-get install evtest

Запустив evtest По программе мы получаем следующий вывод:

No device specified, trying to scan all of /dev/input/event* Available devices: 
/dev/input/event0:    Power Button     
/dev/input/event1:    Power Button     
/dev/input/event2:    PixArt USB Optical Mouse   
/dev/input/event3:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event4:    Microsoft Natural® Ergonomic Keyboard 4000   
/dev/input/event5:    HDA Intel Front Headphone     
/dev/input/event6:    HDA Intel Line Out     
/dev/input/event7:    HDA Intel Line   
/dev/input/event8:    HDA Intel Rear Mic     
/dev/input/event9:    HDA Intel Front Mic     
/dev/input/event10:   HDA ATI HDMI HDMI/DP,pcm=3
Select the device event number [0-10]:

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

Это выведет много информации на терминал и оканчивается следующими строками:

... 

Testing ... (interrupt to exit)
Event: time 1472203902.240594, type 17 (EV_LED), code 0 (LED_NUML), value 0
Event: time 1472203902.240594, -------------- SYN_REPORT ------------
Event: time 1472203902.281456, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70058
Event: time 1472203902.281456, type 1 (EV_KEY), code 96 (KEY_KPENTER), value 0
Event: time 1472203902.281456, -------------- SYN_REPORT ------------

Теперь при каждом нажатии клавиши на клавиатуре она выводит информацию о клавишах. Например, клавиша "Слэш" рядом с правым сдвигом показывает:

Event: time 1472205062.294078, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70038
Event: time 1472205062.294078, type 1 (EV_KEY), code 12 (KEY_SLASH), value 0
Event: time 1472205062.294078, -------------- SYN_REPORT ------------

Первая строка журнала содержит информацию о фактической клавише на клавиатуре, такую ​​как scancode который идет после значения. В этом случае это 70038

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

Итак, в двух словах:

  • Наш тип клавиатуры: 045e:00db
  • Скан-код ключа косой черты: 70038
  • Название ключа для назначения - SLASH

После сбора необходимой информации мы создаем файл конфигурации:

sudoedit /etc/udev/hwdb.d/61-keyboard-local.hwdb

Удар i чтобы активировать режим вставки и введите следующее:

keyboard:usb:v045Ep00DB*
 KEYBOARD_KEY_70038=minus      

Сохранить и выйти, нажав escape затем печатать :wq и нажмите ввод.

Затем выполните следующие две команды, чтобы конфигурация вступила в силу:

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

Наконец, отсоедините клавиатуру и снова подключите ее.

Некоторые заметки о файле конфигурации:

  • Формат файла должен быть точно таким, как показано, пространство перед отображением записей имеет решающее значение.
  • Вместо sudoedit Вы можете использовать любой другой текстовый редактор, просто не забудьте следовать точному формату файла, как описано выше.
  • К типу клавиатуры добавлено два символа: v а также p которые обозначают продавца и товар. Они также важны.
  • Тип клавиатуры пишется прописными буквами в файле конфигурации. Наш тип клавиатуры был 045e:00db, но в конфигурации мы вставляем v045Ep00DB*
  • Скан-код ключа приходит сразу после KEYBOARD_KEY_
  • Имя ключа отображается в нижнем регистре в файле конфигурации
  • Вы можете настроить практически все клавиши на клавиатуре, следуя этому руководству.

Проблема в том, что драйвер evdev игнорирует коды клавиш> 255.
Решение, благодаря Марко Кьяпперо:

 1) вам нужно определить все переназначения, которые вам нужны (в виде 
список кодов сканирования) и поместите их в файл в "/lib/udev/keymaps/" 
(например, я создал Logitech-LX710-беспроводный там). Вы можете найти 
скан-коды, использующие evtest ("sudo evtest /dev/input/eventX", где X - это ваш 
клавиатурное устройство. Будьте осторожны, иногда эти дополнительные ключи открываются через 
другое устройство или интерфейс вашей мыши: например. event3 -> kbd, event4 -> 
мышь и дополнительные клавиши). Вот пример вывода:

Событие: время 1294153475.909379, тип 4 (Разное), код 4 (ScanCode), значение c1028
"c1028" - это значение скан-кода, которое вы собираетесь поместить в файл раскладки, затем 
возьмите число из input.h, как описано ранее, и преобразуйте его в 
шестнадцатеричное. Затем напишите в своем файле пару переназначений, возможно, с описательным 
комментарий, как это:

0xC1028 0x9a # кнопка поворота

Итерация для каждого ключа> 255.

2) вы должны сказать udev применять этот файл переназначения каждый раз, когда он встречается 
свою клавиатуру, поэтому отредактируйте файл "/lib/udev/rules.d/95-keymap.rules", добавив 
правило udev, соответствующее вашему HW. Пожалуйста, не просите меня определить правило для 
вы. 
ПРИМЕЧАНИЕ: вы можете сразу же применить файл раскладки клавиатуры, набрав самостоятельно 
"sudo /lib/udev/keymap /dev/input/eventX /lib/udev/keymaps/$YOUR_FILE" и 
проверьте это с evtest еще раз.

Теперь вы можете использовать редактор ярлыков Gnome, чтобы увидеть, что ключи теперь 
можно использовать внутри X и создавать новые ярлыки. Однако может случиться так, что нет 
KeySym назначен на этот код (так что вы увидите 0xXY вместо XF86Foo). 
Вы можете видеть текущие отображения через xmodmap -pke, сохраняя вывод в 
файл и редактируйте его, если вам нужно (полный список кодов KeySym доступен в
"/ USR / Lib/X11/XKeysymDB").
После того, как вы добавили ключевые слова к тем клавишам, которые вы переназначили, вы можете сохранить этот файл
как ~/.Xmodmap (или как /etc/X11/Xmodmap, если вы хотите применить к каждому пользователю). 

На моей машине дополнительные клавиши (HomePage, Search, Calc и т. Д.) И масштабирование были отправлены через /dev/input/event5, тогда как обычные клавиши были отправлены через /dev/input/event4. Значение ключа масштабирования согласуется с queueoverflow's.

Другие вопросы по тегам