From 60659e3b4488a6947a4ee2835f669b5d5463e34e Mon Sep 17 00:00:00 2001 From: bellard Date: Sat, 19 Aug 2006 14:27:31 +0000 Subject: [PATCH] Japanese keyboard fixes (kazu) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2129 c046a42c-6fe2-441c-8c8c-71466251a162 --- keymaps/ja | 1 + sdl.c | 30 ++++++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/keymaps/ja b/keymaps/ja index 8fd0b9e..ae513c7 100644 --- a/keymaps/ja +++ b/keymaps/ja @@ -97,6 +97,7 @@ Eisu_toggle 0x3a shift Execute 0x54 shift Kanji 0x70 backslash 0x73 +yen 0x7d bar 0x7d shift underscore 0x73 shift Henkan_Mode 0x79 diff --git a/sdl.c b/sdl.c index 00f5746..e65dcac 100644 --- a/sdl.c +++ b/sdl.c @@ -104,6 +104,10 @@ static uint8_t sdl_keyevent_to_keycode_generic(const SDL_KeyboardEvent *ev) keysym = ev->keysym.sym; if (keysym == 0 && ev->keysym.scancode == 113) keysym = SDLK_MODE; + /* For Japanese key '\' and '|' */ + if (keysym == 92 && ev->keysym.scancode == 133) { + keysym = 0xa5; + } return keysym2scancode(kbd_layout, keysym); } @@ -118,7 +122,7 @@ static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev) #else -static const uint8_t x_keycode_to_pc_keycode[61] = { +static const uint8_t x_keycode_to_pc_keycode[115] = { 0xc7, /* 97 Home */ 0xc8, /* 98 Up */ 0xc9, /* 99 PgUp */ @@ -142,10 +146,10 @@ static const uint8_t x_keycode_to_pc_keycode[61] = { 0x0, /* 117 */ 0x0, /* 118 */ 0x0, /* 119 */ - 0x70, /* 120 Hiragana_Katakana */ + 0x0, /* 120 */ 0x0, /* 121 */ 0x0, /* 122 */ - 0x73, /* 123 backslash */ + 0x0, /* 123 */ 0x0, /* 124 */ 0x0, /* 125 */ 0x0, /* 126 */ @@ -180,6 +184,24 @@ static const uint8_t x_keycode_to_pc_keycode[61] = { 0x51, /* 155 KP_PgDn */ 0x52, /* 156 KP_Ins */ 0x53, /* 157 KP_Del */ + 0x0, /* 158 */ + 0x0, /* 159 */ + 0x0, /* 160 */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 170 */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 180 */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 190 */ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 200 */ + 0x0, /* 201 */ + 0x0, /* 202 */ + 0x0, /* 203 */ + 0x0, /* 204 */ + 0x0, /* 205 */ + 0x0, /* 206 */ + 0x0, /* 207 */ + 0x70, /* 208 Hiragana_Katakana */ + 0x0, /* 209 */ + 0x0, /* 210 */ + 0x73, /* 211 backslash */ }; static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev) @@ -192,7 +214,7 @@ static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev) keycode = 0; } else if (keycode < 97) { keycode -= 8; /* just an offset */ - } else if (keycode < 158) { + } else if (keycode < 212) { /* use conversion table */ keycode = x_keycode_to_pc_keycode[keycode - 97]; } else { -- 1.7.9.5