Fix numpad handling and add entries for numpad 5

KP_Clear is mapped from numpad 5 on non-Apple keyboards according to Qt
doc [1]. It's mapped from KP_Begin from XKB on X11.

Tests: with numlock off,

numpad 5 => "\e[OE"
Ctrl + numpad 5 => "\e[1;5E"
Alt + numpad 5 => "\e[1;3E"
Shift + numpad 5 => "5"

These results are the same as VTE3 0.56.3. On xterm 346, Shift + numpad
5 generates "\eO2u". However, Qt returns 5 instead of KP_Clear if Shift
is hold even with numlock off, so implementing Shift + numpad 5 might be
rather complicated. As a side note, shifted keypad sequences can be
found in emacs sources [2].

Note that on Wayfire (wlroots-based Wayland compositor), numpad 5 with
numlock off generates an event without Qt::KeypadModifier. Further
investigation needed.

Ref: https://github.com/lxqt/qtermwidget/issues/117

[1] https://doc.qt.io/qt-5/qt.html#Key-enum
[2] https://github.com/emacs-mirror/emacs/blame/master/lisp/term/xterm.el
This commit is contained in:
Yen Chi Hsuan
2017-02-19 21:43:49 +08:00
committed by Alf Gaida
parent 0d9c8cf0b5
commit 4ffd19203a
2 changed files with 4 additions and 2 deletions
+1 -1
View File
@@ -632,7 +632,7 @@ bool KeyboardTranslator::Entry::matches(int keyCode ,
return false;
// if modifiers is non-zero, the 'any modifier' state is implicit
if ( modifiers != 0 )
if ( (modifiers & ~Qt::KeypadModifier) != 0 )
testState |= AnyModifierState;
if ( (testState & _stateMask) != (_state & _stateMask) )