Переназначить функциональные клавиши Microsoft Sculpt Mobile Keyboard под Linux

ситуация

У меня есть мобильная клавиатура Microsoft Sculpt, которая подключена через Bluetooth. На моем ноутбуке работает xUbuntu 16.04.

Клавиши Sculpt Mobile Keyboard от F1 до F12 работают как функциональные клавиши Play / Pause, Mute,.... Чтобы использовать клавиши от F1 до F12 по назначению, нужно нажать клавиши Fn, расположенные справа. Это довольно неудобно, если вы хотите нажать ALT + F4.... Я хотел бы постоянно переключаться на клавиши Fx (или блокировать клавишу Fn). Кроме того, я хотел бы переключить ключи PageUp и PageDown на Home и End.

Windows Solution

Используйте AutoHotKey, как описано в

Нерабочее решение

Ответ относится к другой клавиатуре

Решение Linux для других клавиатур (не работает)

Должна быть возможность менять или переключать ключи с помощью инструментов командной строки. xkbcomp или же setxkbmap как описано здесь:

Основываясь на этих вопросах и ответах, я использовал 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)]

Alternative Solutions (not tried)

I read about some mice that were recognized as keyboard and not as pointer. Modifying the Linux Kernel code + recompiling it was one of the solutions. I don't want to recompile the Kernel just to get my keyboard properly working....

Hardware solution (working)

Вопрос

  • Is my assumption in "Linux Solution for other Keyboards" wrong?
  • If the answer to the first question is no: How do I solve the described issue software-based (switch and replace keys) without recompiling my Kernel?

0 ответов

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