Japanese keyboard fixes (kazu)
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 19 Aug 2006 14:27:31 +0000 (14:27 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 19 Aug 2006 14:27:31 +0000 (14:27 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2129 c046a42c-6fe2-441c-8c8c-71466251a162

keymaps/ja
sdl.c

index 8fd0b9e..ae513c7 100644 (file)
@@ -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 (file)
--- 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 {