Как заставить работать ползунок масштабирования 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.