Переназначить функциональные клавиши Microsoft Sculpt Mobile Keyboard под Linux
ситуация
У меня есть мобильная клавиатура Microsoft Sculpt, подключенная через Bluetooth. На моем ноутбуке работает xUbuntu 16.04.
F1К F12клавишам клавиатуры работы Sculpt Mobile в качестве функциональных клавиш Play / Pause, Mute, .... Чтобы использовать клавиши F1to F12по назначению, нужно нажать Fnклавиши, которые находятся справа. Это довольно неудобно, если вы хотите нажать ALT+ F4.... Я хотел бы постоянно переключаться на Fxключи (или блокировать Fnключ). Кроме того, я хотел бы переключиться PageUpи PageDownключи против Homeи End.
Windows Solution
Используйте AutoHotKey, как описано в
- Microsoft Sculpt Mobile Keyboard обратные клавиши Fn и
- «Microsoft Sculpt Mobile Keyboard Remap» для AutoHotKey на GitHub .
Нерабочее решение
Ответ относится к другой клавиатуре
Решение Linux для других клавиатур (не работает)
Должна быть возможность менять или переключать ключи с помощью инструментов командной строки xkbcomp
или setxkbmap
как описано здесь:
- Superuser: Как переназначить клавиши под Linux только для конкретной клавиатуры
- AskUbuntu: Что противоположно setxkbmap -option ctrl: nocaps?
- Stackoverflow: создание пользовательского параметра setxkbmap
- Обзор сопоставления ключей xkbcomp на GitHub
- AskUbuntu: изменение раскладки клавиатуры ТОЛЬКО для клавиатуры Bluetooth
- Unix и Linux: используйте setxkbmap, чтобы поменять местами левый Shift и левый элемент управления
Основываясь на этих вопросах и ответах, я использовал xev
для поиска имен ключей (идентификаторов XKB) рассматриваемых ключей. Я хотел создать следующее отображение:
# F1 to F5 (F5 probably does not work) I172 -> FK01 MUTE -> FK02 VOL- -> FK03 VOL+ -> FK04 FIND -> FK05 # F11 and F12 FK22 -> FK11 FK23 -> FK12 # switch Page Up and Page Down with Home and End PGUP -> HOME HOME -> PGUP PGDN -> END END -> PGDN
Таким образом, я создал соответствующий код:
xkb_symbols "remote" { key <I172> { type= "CTRL+ALT", symbols[Group1]= [ F1, F1, F1, F1, XF86Switch_VT_1 ] }; key <MUTE> { type= "CTRL+ALT", symbols[Group1]= [ F2, F2, F2, F2, XF86Switch_VT_2 ] }; key <VOL-> { type= "CTRL+ALT", symbols[Group1]= [ F3, F3, F3, F3, XF86Switch_VT_3 ] }; key <VOL+> { type= "CTRL+ALT", symbols[Group1]= [ F4, F4, F4, F4, XF86Switch_VT_4 ] }; key <FIND> { type= "CTRL+ALT", symbols[Group1]= [ F5, F5, F5, F5, XF86Switch_VT_5 ] }; key <FK22> { type= "CTRL+ALT", symbols[Group1]= [ F11, F11, F11, F11, XF86Switch_VT_11 ] }; key <FK23> { type= "CTRL+ALT", symbols[Group1]= [ F12, F12, F12, F12, XF86Switch_VT_12 ] }; key <PGDN> { [ End ] }; key <END> { [ Next ] }; key <PGUP> { [ Home ] }; key <HOME> { [ Prior ] }; };
И добавил его в существующее определение карты ключей с помощью xkbcomp
и добавил +custom(remote)
в xkb_symbols
переменную отображение ключей устройства соответствующего устройства. Это не работает.
Я думаю, что они, возможно, не работают, потому что клавиатура распознается как указатель, а не как клавиатура. xinput list
Выход говорит:
⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Logitech USB Mouse id=11 [slave pointer (2)] ⎜ ↳ AlpsPS/2 ALPS DualPoint TouchPad id=14 [slave pointer (2)] ⎜ ↳ AlpsPS/2 ALPS DualPoint Stick id=15 [slave pointer (2)] ⎜ ↳ Microsoft Sculpt Mobile Keyboard id=17 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Video Bus id=8 [slave keyboard (3)] ↳ Power Button id=9 [slave keyboard (3)] ↳ Sleep Button id=10 [slave keyboard (3)] ↳ Laptop_Integrated_Webcam_E4HD id=12 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)] ↳ Dell WMI hotkeys id=16 [slave keyboard (3)]
Альтернативные решения (не пробовали)
Я читал о некоторых мышах, которые были распознаны как клавиатура, а не как указатель. Изменение кода ядра Linux + перекомпиляция его было одним из решений. Я не хочу перекомпилировать Ядро только для того, чтобы моя клавиатура нормально работала ...
Аппаратное решение (работает)
Вопрос
- Мое предположение в «Linux Solution for other Keyboards» неверно?
- Если ответ на первый вопрос - нет : как мне решить описанную проблему программно (переключать и заменять ключи) без перекомпиляции моего ядра?
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
1
Переназначить FN на другой ключ
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
Как сопоставить клавиатуру Mac с компоновкой ПК?
-
4
Как переназначить клавишу извлечения на клавиатуре MacBook, чтобы «удалить»?