У меня есть сеанс VNC с рабочим столом gnome2.

Ниже приведено несколько примеров, когда нажатие нескольких клавиш работает, как и ожидалось, и последние два примера дают неожиданные результаты (с F1& F2).

Пожалуйста помоги.

( Shift+ Enter)

KeyPress event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513198614, (95,-14), root:(97,63),
state 0x0, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyPress event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513198717, (95,-14), root:(97,63),
state 0x1, keycode 36 (keysym 0xff0d, Return), same_screen YES,
"   XLookupString gives 1 bytes: (0d) "
"   XmbLookupString gives 1 bytes: (0d) "
XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513198790, (95,-14), root:(97,63),
state 0x1, keycode 36 (keysym 0xff0d, Return), same_screen YES,
"   XLookupString gives 1 bytes: (0d) "
XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513198810, (95,-14), root:(97,63),
state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

( Shift+ \)

KeyPress event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513201404, (95,-14), root:(97,63),
state 0x0, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyPress event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513201476, (95,-14), root:(97,63),
state 0x1, keycode 51 (keysym 0x7c, bar), same_screen YES,
XLookupString gives 1 bytes: (7c) "|"
XmbLookupString gives 1 bytes: (7c) "|"
XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513201547, (95,-14), root:(97,63),
state 0x1, keycode 51 (keysym 0x7c, bar), same_screen YES,
XLookupString gives 1 bytes: (7c) "|"
XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513201577, (95,-14), root:(97,63),
state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

( Shift+ Backspace)

KeyPress event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513204915, (95,-14), root:(97,63),
state 0x0, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyPress event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513205006, (95,-14), root:(97,63),
state 0x1, keycode 22 (keysym 0xff08, BackSpace), same_screen YES,
XLookupString gives 1 bytes: (08) "
XmbLookupString gives 1 bytes: (08) "
XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513205075, (95,-14), root:(97,63),
state 0x1, keycode 22 (keysym 0xff08, BackSpace), same_screen YES,
XLookupString gives 1 bytes: (08) "
XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513205107, (95,-14), root:(97,63),
state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

Во всех приведенных выше примерах:

  • Клавиша Shift нажата
  • Другая клавиша нажата и отпущена
  • Клавиша Shift отпущена.

( Shift+ F1)

KeyPress event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513207893, (95,-14), root:(97,63),
state 0x0, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513208137, (95,-14), root:(97,63),
state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyPress event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513208137, (95,-14), root:(97,63),
state 0x0, keycode 67 (keysym 0xffbe, F1), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyPress event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513208137, (95,-14), root:(97,63),
state 0x0, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513208208, (95,-14), root:(97,63),
state 0x1, keycode 67 (keysym 0xffbe, F1), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513208273, (95,-14), root:(97,63),
state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

( Shift+ F2)

KeyPress event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513219709, (79,-12), root:(81,65),
state 0x0, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513219812, (79,-12), root:(81,65),
state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyPress event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513219812, (79,-12), root:(81,65),
state 0x0, keycode 68 (keysym 0xffbf, F2), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyPress event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513219812, (79,-12), root:(81,65),
state 0x0, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513219885, (79,-12), root:(81,65),
state 0x1, keycode 68 (keysym 0xffbf, F2), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

KeyRelease event, serial 33, synthetic NO, window 0x6600001,
root 0x3f, subw 0x0, time 3513219925, (79,-12), root:(81,65),
state 0x1, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

Так, удерживая Shiftи нажимая F1клавишу, вы получите следующий результат:

  • Shiftнажата и (и Shiftклавиша отпущена)
  • F1Клавиша нажата (и ShiftКлавиша нажата)
  • F1ключ выпущен и Shiftключ выпущен

Это означает, что shiftклавиша отпускается при нажатии клавиши F.

Как это предотвратить?

Alt работает нормально с клавишами F

Ниже приводится xmodmap для этого сервера:

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x6d)
mod1        Alt_L (0x40),  Alt_R (0x71),  Meta_L (0x9c)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x73),  Super_R (0x74),  Super_L (0x7f),  Hyper_L (0x80)
mod5        Mode_switch (0x8),  ISO_Level3_Shift (0x7c)

Ниже приведена xmodmap другого сервера, на котором работают ключи Shift+ F:

xmodmap:  up to 2 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_R (0x6d)
mod1        Alt_L (0x40),  Alt_R (0x71)
mod2        Num_Lock (0x4d)
mod3      
mod4      
mod5      

Я попытался удалить последние 3 модификатора. Но все равно не работает. Нужно ли будет перезапустить любую службу, чтобы вступить в силу. Если так, то не сделали этого. Однако перезапуск VNC полностью сбрасывается к его настройкам по умолчанию.

Я также пытался отключить клавиши F. Но не знаю как. И даже если я отключу эти привязки клавиш F, команды Alt+ F keyне будут работать правильно. Поэтому я не должен полностью отключать привязку клавиш F.

Пожалуйста помоги.

GP92
источник