OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/input_method/ibus_keymap.h" | 5 #include "chrome/browser/chromeos/input_method/ibus_keymap.h" |
6 | 6 |
7 #if defined(HAVE_IBUS) | 7 #define XK_MISCELLANY |
8 #include <ibus.h> | 8 #include <X11/keysymdef.h> |
9 #endif | |
10 | 9 |
11 namespace chromeos { | 10 namespace chromeos { |
12 namespace input_method { | 11 namespace input_method { |
13 | 12 |
14 #if defined(HAVE_IBUS) | |
15 std::string GetIBusKey(int keyval) { | 13 std::string GetIBusKey(int keyval) { |
16 // TODO: Ensure all keys are supported. | 14 // TODO: Ensure all keys are supported. |
17 switch (keyval) { | 15 switch (keyval) { |
18 case IBUS_Escape: | 16 case XK_Escape: |
19 return "Esc"; | 17 return "Esc"; |
20 case IBUS_F1: | 18 case XK_F1: |
21 return "HistoryBack"; | 19 return "HistoryBack"; |
22 case IBUS_F2: | 20 case XK_F2: |
23 return "HistoryForward"; | 21 return "HistoryForward"; |
24 case IBUS_F3: | 22 case XK_F3: |
25 return "BrowserRefresh"; | 23 return "BrowserRefresh"; |
26 case IBUS_F4: | 24 case XK_F4: |
27 return "ChromeOSFullscreen"; // TODO: Check this value | 25 return "ChromeOSFullscreen"; // TODO: Check this value |
28 case IBUS_F5: | 26 case XK_F5: |
29 return "ChromeOSSwitchWindow"; // TODO: Check this value | 27 return "ChromeOSSwitchWindow"; // TODO: Check this value |
30 case IBUS_F6: | 28 case XK_F6: |
31 return "BrightnessDown"; | 29 return "BrightnessDown"; |
32 case IBUS_F7: | 30 case XK_F7: |
33 return "BrightnessUp"; | 31 return "BrightnessUp"; |
34 case IBUS_F8: | 32 case XK_F8: |
35 return "AudioVolumeMute"; | 33 return "AudioVolumeMute"; |
36 case IBUS_F9: | 34 case XK_F9: |
37 return "AudioVolumeDown"; | 35 return "AudioVolumeDown"; |
38 case IBUS_F10: | 36 case XK_F10: |
39 return "AudioVolumeUp"; | 37 return "AudioVolumeUp"; |
40 case IBUS_BackSpace: | 38 case XK_BackSpace: |
41 return "Backspace"; | 39 return "Backspace"; |
42 case IBUS_Delete: | 40 case XK_Delete: |
43 case IBUS_KP_Delete: | 41 case XK_KP_Delete: |
44 return "Delete"; | 42 return "Delete"; |
45 case IBUS_Tab: | 43 case XK_Tab: |
46 return "Tab"; | 44 return "Tab"; |
47 case IBUS_KP_Enter: | 45 case XK_KP_Enter: |
48 case IBUS_Return: | 46 case XK_Return: |
49 return "Enter"; | 47 return "Enter"; |
50 case IBUS_Meta_L: | 48 case XK_Meta_L: |
51 return "BrowserSearch"; | 49 return "BrowserSearch"; |
52 case IBUS_Up: | 50 case XK_Up: |
53 case IBUS_KP_Up: | 51 case XK_KP_Up: |
54 return "Up"; | 52 return "Up"; |
55 case IBUS_Down: | 53 case XK_Down: |
56 case IBUS_KP_Down: | 54 case XK_KP_Down: |
57 return "Down"; | 55 return "Down"; |
58 case IBUS_Left: | 56 case XK_Left: |
59 case IBUS_KP_Left: | 57 case XK_KP_Left: |
60 return "Left"; | 58 return "Left"; |
61 case IBUS_Right: | 59 case XK_Right: |
62 case IBUS_KP_Right: | 60 case XK_KP_Right: |
63 return "Right"; | 61 return "Right"; |
64 case IBUS_Page_Up: | 62 case XK_Page_Up: |
65 return "PageUp"; | 63 return "PageUp"; |
66 case IBUS_Page_Down: | 64 case XK_Page_Down: |
67 return "PageDown"; | 65 return "PageDown"; |
68 case IBUS_Home: | 66 case XK_Home: |
69 return "Home"; | 67 return "Home"; |
70 case IBUS_End: | 68 case XK_End: |
71 return "End"; | 69 return "End"; |
72 default: { | 70 default: { |
73 // TODO: Properly support unicode characters. | 71 // TODO: Properly support unicode characters. |
74 char value[2]; | 72 char value[2]; |
75 value[0] = keyval; | 73 value[0] = keyval; |
76 value[1] = '\0'; | 74 value[1] = '\0'; |
77 return value; | 75 return value; |
78 } | 76 } |
79 } | 77 } |
80 } | 78 } |
81 | 79 |
82 std::string GetIBusKeyCode(int keycode) { | 80 std::string GetIBusKeyCode(int keycode) { |
83 // TODO: Support keyboard layouts properly. | 81 // TODO: Support keyboard layouts properly. |
84 return GetIBusKey(keycode); | 82 return GetIBusKey(keycode); |
85 } | 83 } |
86 #else | |
87 std::string GetIBusKey(int keyval) { | |
88 return ""; | |
89 } | |
90 | |
91 std::string GetIBusKeyCode(int keycode) { | |
92 return ""; | |
93 } | |
94 | |
95 #endif // HAVE_IBUS | |
96 | 84 |
97 } // namespace input_method | 85 } // namespace input_method |
98 } // namespace chromeos | 86 } // namespace chromeos |
OLD | NEW |