Можно ли переназначить клавиши Back / Forward USB-клавиатуры Thinkpad на Linux?

8

На моем ноутбуке Thinkpad я могу легко заменить клавиши «Назад» / «Вперед» на что-то другое (обычно я сопоставляю их с PageDown / PageUp), так как они имеют свой собственный код клавиши (166 и 167):

xmodmap -e 'keycode 166=Prior'
xmodmap -e 'keycode 167=Next'

Тем не менее, на моей клавиатуре Thinkpad USB клавиши Back / Forward, кажется, жестко сопоставлены с Alt + Left и Alt + Right соответственно, поэтому я не могу использовать xmodmap для их переназначения. Есть ли другой способ, которым я могу переназначить их? Я уже пробовал xautomation, но это не сработало.

Вот что «xev» показывает мне, когда я нажимаю клавишу «Вперед»:

KeyPress event, serial 36, synthetic NO, window 0x4e00001,
    root 0xb4, subw 0x0, time 65023191, (16,-20), root:(641,33),
    state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 36, synthetic NO, window 0x4e00001,
    root 0xb4, subw 0x0, time 65023191, (16,-20), root:(641,33),
    state 0x8, keycode 114 (keysym 0xff53, Right), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x4e00001,
    root 0xb4, subw 0x0, time 65023271, (16,-20), root:(641,33),
    state 0x8, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 36, synthetic NO, window 0x4e00001,
    root 0xb4, subw 0x0, time 65023271, (16,-20), root:(641,33),
    state 0x0, keycode 114 (keysym 0xff53, Right), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
Гильерме Сальгадо
источник
1
Если ключи имеют код ключа, они могут быть переназначены правильно? Это отличается от ключа блокировки крышки? Похоже, эта страница переназначает его. Я не пробовал это. Просто предлагаю. efod.se/writings/linuxbook/html/caps-lock-to-ctrl.html
Бибхас,
Проблема именно в том, что он не имеет ключевого кода, а вместо этого жестко связан с alt-left / alt-right
Гильерме Сальгадо

Ответы:

0
  1. Установите xdotool
  2. Создайте сценарий или псевдоним оболочки для команды нажатия клавиши, которую вы хотите запустить ( xdotool key --clearmodifiers Page_Down)
  3. Привязать этот сценарий / псевдоним к отправленной комбинации (Alt + Left) в конфигурации горячих клавиш / ярлыков среды рабочего стола.

Обратите внимание, что в gnome-control-center кажется невозможным назначить кнопки «Назад» / «Вперед» на клавиатуре USB для ярлыка (вы можете назначить их, но назначенная им команда / действие никогда не будет вызываться / случиться), так что вам может понадобиться что-то еще, например, плагин команды Comiz.

SleighBoy
источник
1
Спасибо за предложение @sleighboy. Я попробовал это с помощью xautomation , но это не сработало. См. Мой собственный ответ, ниже, относительно того, почему
Гильерме Сальгадо
1
На самом деле, это должен быть окончательный ответ, и я просто объясню, почему это не сработало. Команда для запуска должна быть xdotool key --clearmodifiers Page_Upи по какой-то причине назначить кнопку «Назад / Вперед» в качестве ускорителя ярлыка на gnome-control-center, похоже, не работает, но если вы используете плагин compiz '' Commands ', он будет работать.
Гильерме Сальгадо
0

Я положил это в моем .bashrc:

# this maps the previous and next page buttons to pgup and pgdown 
xmodmap -e "keycode 167 = Next" 
xmodmap -e "keycode 166 = Prior"

прекрасно работает, но, кажется, по какой-то причине не режет его в virtualbox 6.

Stu
источник