From e934644126f214a99bb3b3201f73fe7f0c579ef7 Mon Sep 17 00:00:00 2001 From: OGAWA Hirofumi Date: Wed, 28 Dec 2016 04:55:51 +0900 Subject: [PATCH] ps2: Fix lost scancodes by recent changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With "ps2: use QEMU qcodes instead of scancodes", key handling was changed to qcode base. But all scancodes are not converted to new one. This adds some missing qcodes/scancodes what I found in using. [set1 and set3 are from ] Signed-off-by: OGAWA Hirofumi Reviewed-by: Hervé Poussineau Signed-off-by: Gerd Hoffmann --- hw/input/ps2.c | 10 ++++++++++ qapi-schema.json | 6 +++++- ui/input-keymap.c | 3 +++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/hw/input/ps2.c b/hw/input/ps2.c index 0d14de08a6..8485a4edaf 100644 --- a/hw/input/ps2.c +++ b/hw/input/ps2.c @@ -252,6 +252,9 @@ static const uint16_t qcode_to_keycode_set1[Q_KEY_CODE__MAX] = { [Q_KEY_CODE_ASTERISK] = 0x37, [Q_KEY_CODE_LESS] = 0x56, [Q_KEY_CODE_RO] = 0x73, + [Q_KEY_CODE_HIRAGANA] = 0x70, + [Q_KEY_CODE_HENKAN] = 0x79, + [Q_KEY_CODE_YEN] = 0x7d, [Q_KEY_CODE_KP_COMMA] = 0x7e, }; @@ -394,6 +397,9 @@ static const uint16_t qcode_to_keycode_set2[Q_KEY_CODE__MAX] = { [Q_KEY_CODE_LESS] = 0x61, [Q_KEY_CODE_SYSRQ] = 0x7f, [Q_KEY_CODE_RO] = 0x51, + [Q_KEY_CODE_HIRAGANA] = 0x13, + [Q_KEY_CODE_HENKAN] = 0x64, + [Q_KEY_CODE_YEN] = 0x6a, [Q_KEY_CODE_KP_COMMA] = 0x6d, }; @@ -504,6 +510,10 @@ static const uint16_t qcode_to_keycode_set3[Q_KEY_CODE__MAX] = { [Q_KEY_CODE_COMMA] = 0x41, [Q_KEY_CODE_DOT] = 0x49, [Q_KEY_CODE_SLASH] = 0x4a, + + [Q_KEY_CODE_HIRAGANA] = 0x87, + [Q_KEY_CODE_HENKAN] = 0x86, + [Q_KEY_CODE_YEN] = 0x5d, }; static uint8_t translate_table[256] = { diff --git a/qapi-schema.json b/qapi-schema.json index a0d3b5d7c5..eab8d4a9ee 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -3618,6 +3618,9 @@ # @kp_comma: since 2.4 # @kp_equals: since 2.6 # @power: since 2.6 +# @hiragana: since 2.9 +# @henkan: since 2.9 +# @yen: since 2.9 # # An enumeration of key name. # @@ -3642,7 +3645,8 @@ 'kp_9', 'less', 'f11', 'f12', 'print', 'home', 'pgup', 'pgdn', 'end', 'left', 'up', 'down', 'right', 'insert', 'delete', 'stop', 'again', 'props', 'undo', 'front', 'copy', 'open', 'paste', 'find', 'cut', - 'lf', 'help', 'meta_l', 'meta_r', 'compose', 'pause', 'ro', + 'lf', 'help', 'meta_l', 'meta_r', 'compose', 'pause', + 'ro', 'hiragana', 'henkan', 'yen', 'kp_comma', 'kp_equals', 'power' ] } ## diff --git a/ui/input-keymap.c b/ui/input-keymap.c index f1e700d720..8a1476fc48 100644 --- a/ui/input-keymap.c +++ b/ui/input-keymap.c @@ -131,6 +131,9 @@ static const int qcode_to_number[] = { [Q_KEY_CODE_DELETE] = 0xd3, [Q_KEY_CODE_RO] = 0x73, + [Q_KEY_CODE_HIRAGANA] = 0x70, + [Q_KEY_CODE_HENKAN] = 0x79, + [Q_KEY_CODE_YEN] = 0x7d, [Q_KEY_CODE_KP_COMMA] = 0x7e, [Q_KEY_CODE__MAX] = 0,