С клавиатурой Logitech K290 через USB, клавиши F. по умолчанию недоступны, и мне нужно нажать их Fnперед использованием, что не очень удобно.
Один Fnключ не запускает никаких событий в xev
.
Нажатие F1без Fnпожаров двух ключевых событий, KEYCODE 50 ( Shift_L
) и KEYCODE 133 ( Super_L
) и выводит на экран сообщение «Сенсорная панель отключена» на моей Kubuntu (то же самое сообщение для каждых ключей F1через F4)
Несмотря на то, что большинство медиа-клавиш работает, я бы предпочел прямой доступ к F.-ключам. Знаете ли вы какой-либо способ переключения Fnповедения?
Вот вывод для когда я нажимаю F1без Fn:
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64638420, (-352,274), root:(1462,621),
state 0x10, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64638420, (-352,274), root:(1462,621),
state 0x11, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
FocusOut event, serial 40, synthetic NO, window 0x1a00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 40, synthetic NO, window 0x1a00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 40, synthetic NO, window 0x0,
keys: 4294967238 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0
32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64638436, (-352,274), root:(1462,621),
state 0x51, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64638436, (-352,274), root:(1462,621),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
MappingNotify event, serial 40, synthetic NO, window 0x0,
request MappingPointer, first_keycode 0, count 0
И для F2(до сих пор нет Fn):
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64782724, (-202,438), root:(1491,799),
state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64782724, (-202,438), root:(1491,799),
state 0x18, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
FocusOut event, serial 40, synthetic NO, window 0x1a00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 40, synthetic NO, window 0x1a00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 40, synthetic NO, window 0x0,
keys: 4294967238 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64782780, (-202,438), root:(1491,799),
state 0x58, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64782780, (-202,438), root:(1491,799),
state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
F1с Fnдает ожидаемый результат:
KeyPress event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64820204, (-856,-213), root:(1097,247),
state 0x10, keycode 67 (keysym 0xffbe, F1), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 40, synthetic NO, window 0x1a00001,
root 0x2c6, subw 0x0, time 64820284, (-856,-213), root:(1097,247),
state 0x10, keycode 67 (keysym 0xffbe, F1), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
xev
еще раз запустить и вставить вывод для двух разных F-клавиш?Ответы:
Я получил тот же результат, поменяв местами коды клавиш
Fn+Fx
иFx
где х1,2,...12
.xmodmap -pke
для получения списка текущих кодов клавиш и символов клавиш.xev
и нажмитеF1
черезF12
сохранение к сведению его клавиатурным.~/.Xmodmap
файле.Например, в моей системе результат (1):
Затем я поменял его
~/.Xmodmap
:Затем, чтобы принять эффект запустить
xmodmap ~/.Xmodmap
.источник
xev
не может отображать события, захваченные средой рабочего стола. Лучший способ проверить ключи - использоватьshowkey
команду (в консоли Linux, а не внутри X11). Я предполагаю, что ОС фактически получает комбинацию клавиш Shift + Super + some-key.Хотя вы могли предположительно переназначить указанную комбинацию просто на клавишу F, это, вероятно, было бы проблематично: вам пришлось бы «отпустить» клавишу Shift (потому что клавиатура имитирует нажатие на нее), и заставить работать Shift + F1 было бы еще сложнее , поскольку это потребовало бы отслеживания, если клавиша Shift была нажата ранее.
Эта проблема очень распространена на ноутбуках, которые часто имеют либо комбинацию клавиш для переключения мультимедийных горячих клавиш, либо опцию в их BIOS / прошивке. Но, как вы упомянули, что это касается конкретной модели внешней клавиатуры, глядя в Интернете, я нашел этот проект:
https://github.com/milgner/k290-fnkeyctl
В описании проекта говорится, что он «перенастраивает работу функциональных клавиш на клавиатурах Logitech K290», поэтому стоит попробовать.
источник