Index: base/keyboard_code_conversion_gtk.cc |
=================================================================== |
--- base/keyboard_code_conversion_gtk.cc (revision 28937) |
+++ base/keyboard_code_conversion_gtk.cc (working copy) |
@@ -411,7 +411,7 @@ |
} |
// TODO(jcampan): this method might be incomplete. |
-int GdkKeyCodeForWindowsKeyCode(base::KeyboardCode keycode) { |
+int GdkKeyCodeForWindowsKeyCode(base::KeyboardCode keycode, bool shift) { |
switch (keycode) { |
case VKEY_NUMPAD0: |
return GDK_KP_0; |
@@ -447,7 +447,7 @@ |
case VKEY_BACK: |
return GDK_BackSpace; |
case VKEY_TAB: |
- return GDK_Tab; |
+ return shift ? GDK_ISO_Left_Tab : GDK_Tab; |
case VKEY_CLEAR: |
return GDK_Clear; |
case VKEY_RETURN: |
@@ -500,78 +500,54 @@ |
case VKEY_HELP: |
return GDK_Help; |
case VKEY_0: |
- return GDK_0; |
+ return shift ? GDK_parenright : GDK_0; |
case VKEY_1: |
- return GDK_1; |
+ return shift ? GDK_exclam : GDK_1; |
case VKEY_2: |
- return GDK_2; |
+ return shift ? GDK_at : GDK_2; |
case VKEY_3: |
- return GDK_3; |
+ return shift ? GDK_numbersign : GDK_3; |
case VKEY_4: |
- return GDK_4; |
+ return shift ? GDK_dollar : GDK_4; |
case VKEY_5: |
- return GDK_5; |
+ return shift ? GDK_percent : GDK_5; |
case VKEY_6: |
- return GDK_6; |
+ return shift ? GDK_asciicircum : GDK_6; |
case VKEY_7: |
- return GDK_7; |
+ return shift ? GDK_ampersand : GDK_7; |
case VKEY_8: |
- return GDK_8; |
+ return shift ? GDK_asterisk : GDK_8; |
case VKEY_9: |
- return GDK_9; |
+ return shift ? GDK_parenleft : GDK_9; |
case VKEY_A: |
- return GDK_a; |
case VKEY_B: |
- return GDK_b; |
case VKEY_C: |
- return GDK_c; |
case VKEY_D: |
- return GDK_d; |
case VKEY_E: |
- return GDK_e; |
case VKEY_F: |
- return GDK_f; |
case VKEY_G: |
- return GDK_g; |
case VKEY_H: |
- return GDK_h; |
case VKEY_I: |
- return GDK_i; |
case VKEY_J: |
- return GDK_j; |
case VKEY_K: |
- return GDK_k; |
case VKEY_L: |
- return GDK_l; |
case VKEY_M: |
- return GDK_m; |
case VKEY_N: |
- return GDK_n; |
case VKEY_O: |
- return GDK_o; |
case VKEY_P: |
- return GDK_p; |
case VKEY_Q: |
- return GDK_q; |
case VKEY_R: |
- return GDK_r; |
case VKEY_S: |
- return GDK_s; |
case VKEY_T: |
- return GDK_t; |
case VKEY_U: |
- return GDK_u; |
case VKEY_V: |
- return GDK_v; |
case VKEY_W: |
- return GDK_w; |
case VKEY_X: |
- return GDK_x; |
case VKEY_Y: |
- return GDK_y; |
case VKEY_Z: |
- return GDK_z; |
+ return (shift ? GDK_A : GDK_a) + (keycode - VKEY_A); |
+ |
case VKEY_LWIN: |
return GDK_Meta_L; |
case VKEY_RWIN: |
@@ -584,27 +560,27 @@ |
return GDK_Scroll_Lock; |
case VKEY_OEM_1: |
- return GDK_semicolon; |
+ return shift ? GDK_colon : GDK_semicolon; |
case VKEY_OEM_PLUS: |
- return GDK_plus; |
+ return shift ? GDK_plus : GDK_equal; |
case VKEY_OEM_COMMA: |
- return GDK_comma; |
+ return shift ? GDK_less : GDK_comma; |
case VKEY_OEM_MINUS: |
- return GDK_minus; |
+ return shift ? GDK_underscore : GDK_minus; |
case VKEY_OEM_PERIOD: |
- return GDK_period; |
+ return shift ? GDK_greater : GDK_period; |
case VKEY_OEM_2: |
- return GDK_slash; |
+ return shift ? GDK_question : GDK_slash; |
case VKEY_OEM_3: |
- return GDK_asciitilde; |
+ return shift ? GDK_asciitilde : GDK_quoteleft; |
case VKEY_OEM_4: |
- return GDK_bracketleft; |
+ return shift ? GDK_braceleft : GDK_bracketleft; |
case VKEY_OEM_5: |
- return GDK_backslash; |
+ return shift ? GDK_bar : GDK_backslash; |
case VKEY_OEM_6: |
- return GDK_bracketright; |
+ return shift ? GDK_braceright : GDK_bracketright; |
case VKEY_OEM_7: |
- return GDK_quoteright; |
+ return shift ? GDK_quotedbl : GDK_quoteright; |
case VKEY_F1: |
case VKEY_F2: |