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

21

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

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

Мартин Уединг
источник
2
См. Askubuntu.com/questions/471802/… . Прежние ответы здесь могут быть устаревшими.
Мэтт

Ответы:

18

Создайте файл /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.

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

Кис Кук
источник
Это сработало для меня безупречно, используя Fedora 19.
Рубенс Мариуццо
Для Microsoft Ergonomic 7000 модель выглядит как 071d (полученная lsusb), а не 00db, так что если кто-то попробует это для 7000, он, вероятно, должен заменить 00db на 071d в приведенном выше файле. В любом случае, в моем случае (Ubuntu 14.04) это не работает, возможно, это связано с тем фактом, evtestчто ползунок масштабирования не вызывает никаких событий, в отличие от большинства других клавиш клавиатуры Ergonomic 7000, которые это делают. Не уверен насчет этого, поскольку кнопка Web / Home также не отображает никакого вывода evtest- хотя Ubuntu и подхватывает его.
Мэтт
1
Я не могу заставить 4000 работать 14.04. Не видеть события в xev.
Майкл
Попробовал это 14.10, и не сработало.
Рубенс Мариуццо
@ Cocoabean xevу меня тоже не работает. Что это такое evtest /dev/input/event3. Если event3нет реакции на этот ключ, протестируйте другие события ( event[0..9]).
Николас
9

На 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

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

Константин К.
источник
1
Работал 14.04 для меня
Амир Увал
Мой 60-keyboard.hwdb имел существующую запись для MNEK4K с клавиатурой: usb: b0003v045Ep00DB *. Смена действий не сработала. Добавление новой записи с этими действиями сработало.
Alrekr
Работал как шарм 16.04. Я использовал «вверх» и «вниз» (вместо «pageup» и «pagedown») для более плавной прокрутки при просмотре веб-страниц. Большое спасибо!
Пьер
Вы можете сопоставить katakanaи katakanahiragana(или любой другой неиспользованный код ключа с hal.freedesktop.org/quirk/quirk-keymap-list.txt ) вместо псевдонима с существующими ключами. Таким образом, вы можете распознавать и использовать клавиши в сочетании с модификаторами для переключения громкости, языка, размера и т. Д. (Настройте ваш оконный менеджер на использование двух новых супер-клавиш).
dmitry_romanov
4

Чтобы настроить 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затем нажмите Enter:

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

... 

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и нажав Enter.

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

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

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

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

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

Проблема в том , что 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, если вы хотите применить к каждому пользователю).
desgua
источник
Я понял, что мне нужны кнопки c022d и c022e, но я не могу найти input.h.
Мартин Уединг,
Как я понимаю (но я не могу испытание , потому что нет такого оборудования) вы на самом деле не нужно input.h, вам просто нужно редактировать этот файл: /lib/udev/rules.d/95-keymap.rules. (Может быть, здесь, на панели запуска, вы можете найти людей с таким же оборудованием, поэтому больше можете помочь bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/313514 ). Вы редактировали файл, который я упоминал выше?
Desgua
1
Это слишком технический и дезорганизованный ответ для большинства людей. Несколько серьезных пробелов: нет помощи в определении подходящего / dev / input / eventX, неясные шаги, смешанные с контекстной информацией и просьбы не запрашивать инструкции для создания таблиц ключей.
Ален О'Ди
1
По умолчанию evtest даже не установлен, что еще хуже.
Ален О'Ди
Методом проб и ошибок я обнаружил, что моя клавиатура - / dev / input / event3, и evtest не получает никаких событий с ползунка масштабирования.
Ален О'Ди
0

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

Никлас
источник