Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(236)

Side by Side Diff: chrome/browser/chromeos/input_method/xkeyboard.h

Issue 10383301: Move modifier remapping code from X to Ash (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reverted ui/base/keycodes/keyboard_code_conversion_x.cc (this was just for debugging) Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 #ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_XKEYBOARD_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_XKEYBOARD_H_
6 #define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_XKEYBOARD_H_ 6 #define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_XKEYBOARD_H_
7 #pragma once 7 #pragma once
8 8
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/basictypes.h" 12 #include "base/basictypes.h"
13 13
14 namespace chromeos { 14 namespace chromeos {
15 namespace input_method { 15 namespace input_method {
16 16
17 struct AutoRepeatRate { 17 struct AutoRepeatRate {
18 AutoRepeatRate() : initial_delay_in_ms(0), repeat_interval_in_ms(0) {} 18 AutoRepeatRate() : initial_delay_in_ms(0), repeat_interval_in_ms(0) {}
19 unsigned int initial_delay_in_ms; 19 unsigned int initial_delay_in_ms;
20 unsigned int repeat_interval_in_ms; 20 unsigned int repeat_interval_in_ms;
21 }; 21 };
22 22
23 enum ModifierLockStatus { 23 enum ModifierLockStatus {
24 kDisableLock = 0, 24 kDisableLock = 0,
25 kEnableLock, 25 kEnableLock,
26 kDontChange, 26 kDontChange,
27 }; 27 };
28 28
29 // TODO(yusukes): Remove this enum when crbug.com/115112 is implemented.
30 enum ModifierKey { 29 enum ModifierKey {
31 kSearchKey = 0, // Customizable. 30 kSearchKey = 0, // Customizable.
32 kControlKey, // Customizable. 31 kControlKey, // Customizable.
33 kAltKey, // Customizable. 32 kAltKey, // Customizable.
34 kVoidKey, 33 kVoidKey,
35 kCapsLockKey, 34 kCapsLockKey,
36 // IMPORTANT: You should update kCustomizableKeys[] in .cc file, if you 35 // IMPORTANT: You should update kCustomizableKeys[] in .cc file, if you
37 // add a customizable key. 36 // add a customizable key.
38 kNumModifierKeys, 37 kNumModifierKeys,
39 }; 38 };
40 39
41 // TODO(yusukes): Remove this struct when crbug.com/115112 is implemented.
42 struct ModifierKeyPair {
43 ModifierKeyPair(ModifierKey in_original, ModifierKey in_replacement)
44 : original(in_original), replacement(in_replacement) {}
45 bool operator==(const ModifierKeyPair& rhs) const {
46 // For CheckMap() in chromeos_keyboard_unittest.cc.
47 return (rhs.original == original) && (rhs.replacement == replacement);
48 }
49 ModifierKey original; // Replace the key with
50 ModifierKey replacement; // this key.
51 };
52 typedef std::vector<ModifierKeyPair> ModifierMap;
53
54 class InputMethodUtil; 40 class InputMethodUtil;
55 41
56 class XKeyboard { 42 class XKeyboard {
57 public: 43 public:
58 virtual ~XKeyboard() {} 44 virtual ~XKeyboard() {}
59 45
60 // Sets the current keyboard layout to |layout_name|. This function does not 46 // Sets the current keyboard layout to |layout_name|. This function does not
61 // change the current mapping of the modifier keys. Returns true on success. 47 // change the current mapping of the modifier keys. Returns true on success.
62 virtual bool SetCurrentKeyboardLayoutByName( 48 virtual bool SetCurrentKeyboardLayoutByName(
63 const std::string& layout_name) = 0; 49 const std::string& layout_name) = 0;
64 50
65 // Remaps modifier keys. This function does not change the current keyboard
66 // layout. Returns true on success. For now, you can't remap Left Control and
67 // Left Alt keys to caps lock.
68 // TODO(yusukes): Remove this method when crbug.com/115112 is implemented.
69 virtual bool RemapModifierKeys(const ModifierMap& modifier_map) = 0;
70
71 // Sets the current keyboard layout again. We have to call the function every 51 // Sets the current keyboard layout again. We have to call the function every
72 // time when "XI_HierarchyChanged" XInput2 event is sent to Chrome. See 52 // time when "XI_HierarchyChanged" XInput2 event is sent to Chrome. See
73 // xinput_hierarchy_changed_event_listener.h for details. 53 // xinput_hierarchy_changed_event_listener.h for details.
74 virtual bool ReapplyCurrentKeyboardLayout() = 0; 54 virtual bool ReapplyCurrentKeyboardLayout() = 0;
75 55
76 // Updates keyboard LEDs on all keyboards. 56 // Updates keyboard LEDs on all keyboards.
77 // XKB asymmetrically propagates keyboard modifier indicator state changes to 57 // XKB asymmetrically propagates keyboard modifier indicator state changes to
78 // slave keyboards. If the state change is initiated from a client to the 58 // slave keyboards. If the state change is initiated from a client to the
79 // "core/master keyboard", XKB changes global state and pushes an indication 59 // "core/master keyboard", XKB changes global state and pushes an indication
80 // change down to all keyboards. If the state change is initiated by one slave 60 // change down to all keyboards. If the state change is initiated by one slave
(...skipping 24 matching lines...) Expand all
105 // threads. 85 // threads.
106 virtual bool CapsLockIsEnabled() = 0; 86 virtual bool CapsLockIsEnabled() = 0;
107 87
108 // Creates a full XKB layout name like 88 // Creates a full XKB layout name like
109 // "gb(extd)+chromeos(leftcontrol_disabled_leftalt),us" 89 // "gb(extd)+chromeos(leftcontrol_disabled_leftalt),us"
110 // from modifier key mapping and |layout_name|, such as "us", "us(dvorak)", 90 // from modifier key mapping and |layout_name|, such as "us", "us(dvorak)",
111 // and "gb(extd)". Returns an empty string on error. Do not call this function 91 // and "gb(extd)". Returns an empty string on error. Do not call this function
112 // directly: it is public for testability. 92 // directly: it is public for testability.
113 // TODO(yusukes): Remove this method from the interface class. 93 // TODO(yusukes): Remove this method from the interface class.
114 virtual std::string CreateFullXkbLayoutName( 94 virtual std::string CreateFullXkbLayoutName(
115 const std::string& layout_name, 95 const std::string& layout_name) = 0;
116 const ModifierMap& modifire_map) = 0;
117 96
118 // Returns a mask (e.g. 1U<<4) for Num Lock. On error, returns 0. Do not call 97 // Returns a mask (e.g. 1U<<4) for Num Lock. On error, returns 0. Do not call
119 // the function from non-UI threads. 98 // the function from non-UI threads.
120 // TODO(yusukes): Move this and webdriver::GetXModifierMask() functions in 99 // TODO(yusukes): Move this and webdriver::GetXModifierMask() functions in
121 // chrome/test/webdriver/keycode_text_conversion_x.cc to ui/base/x/x11_util. 100 // chrome/test/webdriver/keycode_text_conversion_x.cc to ui/base/x/x11_util.
122 // The two functions are almost the same. 101 // The two functions are almost the same.
123 virtual unsigned int GetNumLockMask() = 0; 102 virtual unsigned int GetNumLockMask() = 0;
124 103
125 // Set true on |out_caps_lock_enabled| if Caps Lock is enabled. Set true on 104 // Set true on |out_caps_lock_enabled| if Caps Lock is enabled. Set true on
126 // |out_num_lock_enabled| if Num Lock is enabled. Both out parameters can be 105 // |out_num_lock_enabled| if Num Lock is enabled. Both out parameters can be
(...skipping 13 matching lines...) Expand all
140 static bool SetAutoRepeatRate(const AutoRepeatRate& rate); 119 static bool SetAutoRepeatRate(const AutoRepeatRate& rate);
141 120
142 // Returns true if auto repeat is enabled. This function is protected: for 121 // Returns true if auto repeat is enabled. This function is protected: for
143 // testability. 122 // testability.
144 static bool GetAutoRepeatEnabledForTesting(); 123 static bool GetAutoRepeatEnabledForTesting();
145 124
146 // On success, set current auto repeat rate on |out_rate| and returns true. 125 // On success, set current auto repeat rate on |out_rate| and returns true.
147 // Returns false otherwise. This function is protected: for testability. 126 // Returns false otherwise. This function is protected: for testability.
148 static bool GetAutoRepeatRateForTesting(AutoRepeatRate* out_rate); 127 static bool GetAutoRepeatRateForTesting(AutoRepeatRate* out_rate);
149 128
150 // Returns true if |key| is in |modifier_map| as replacement. Do not call this
151 // function directly: it is public for testability.
152 static bool ContainsModifierKeyAsReplacement(const ModifierMap& modifier_map,
153 ModifierKey key);
154
155 // Note: At this moment, classes other than InputMethodManager should not 129 // Note: At this moment, classes other than InputMethodManager should not
156 // instantiate the XKeyboard class. 130 // instantiate the XKeyboard class.
157 static XKeyboard* Create(const InputMethodUtil& util); 131 static XKeyboard* Create(const InputMethodUtil& util);
158 }; 132 };
159 133
160 } // namespace input_method 134 } // namespace input_method
161 } // namespace chromeos 135 } // namespace chromeos
162 136
163 #endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_XKEYBOARD_H_ 137 #endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_XKEYBOARD_H_
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/input_method/mock_xkeyboard.cc ('k') | chrome/browser/chromeos/input_method/xkeyboard.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698