Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "ui/events/keycodes/keyboard_code_conversion.h" | 5 #include "ui/events/keycodes/keyboard_code_conversion.h" |
| 6 | 6 |
| 7 #include "ui/events/event_constants.h" | 7 #include "ui/events/event_constants.h" |
| 8 #include "ui/events/keycodes/dom3/dom_code.h" | |
| 8 #include "ui/events/keycodes/dom3/dom_key.h" | 9 #include "ui/events/keycodes/dom3/dom_key.h" |
| 9 | 10 |
| 10 namespace ui { | 11 namespace ui { |
| 11 | 12 |
| 12 namespace { | 13 namespace { |
| 13 | 14 |
| 14 // This table maps a subset of |KeyboardCode| (VKEYs) to DomKey and character. | 15 // This table maps a subset of |KeyboardCode| (VKEYs) to DomKey and character. |
| 15 // Only values not otherwise handled by GetMeaningFromKeyCode() are here. | 16 // Only values not otherwise handled by GetMeaningFromKeyCode() are here. |
| 16 const struct KeyboardCodeToMeaning { | 17 const struct KeyboardCodeToMeaning { |
| 17 KeyboardCode key_code; | 18 KeyboardCode key_code; |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 117 #if defined(OS_POSIX) | 118 #if defined(OS_POSIX) |
| 118 {VKEY_POWER, DomKey::POWER, 0, 0}, | 119 {VKEY_POWER, DomKey::POWER, 0, 0}, |
| 119 {VKEY_BRIGHTNESS_DOWN, DomKey::BRIGHTNESS_DOWN, 0, 0}, | 120 {VKEY_BRIGHTNESS_DOWN, DomKey::BRIGHTNESS_DOWN, 0, 0}, |
| 120 {VKEY_BRIGHTNESS_UP, DomKey::BRIGHTNESS_UP, 0, 0}, | 121 {VKEY_BRIGHTNESS_UP, DomKey::BRIGHTNESS_UP, 0, 0}, |
| 121 {VKEY_COMPOSE, DomKey::COMPOSE, 0, 0}, | 122 {VKEY_COMPOSE, DomKey::COMPOSE, 0, 0}, |
| 122 {VKEY_OEM_103, DomKey::MEDIA_REWIND, 0, 0}, | 123 {VKEY_OEM_103, DomKey::MEDIA_REWIND, 0, 0}, |
| 123 {VKEY_OEM_104, DomKey::MEDIA_FAST_FORWARD, 0, 0}, | 124 {VKEY_OEM_104, DomKey::MEDIA_FAST_FORWARD, 0, 0}, |
| 124 #endif | 125 #endif |
| 125 }; | 126 }; |
| 126 | 127 |
| 128 bool IsRightSideDomCode(DomCode code) { | |
|
Wez
2015/01/10 02:06:28
Why are you treating the modifiers to an IsRightSi
kpschoedel
2015/01/12 16:34:06
IsRightSideDomCode() exists because |code| doesn't
Wez
2015/01/13 03:08:36
Acknowledged.
| |
| 129 return (code == DomCode::SHIFT_RIGHT) || (code == DomCode::CONTROL_RIGHT) || | |
| 130 (code == DomCode::ALT_RIGHT) || (code == DomCode::OS_RIGHT); | |
| 131 } | |
| 132 | |
| 127 } // anonymous namespace | 133 } // anonymous namespace |
| 128 | 134 |
| 129 base::char16 GetCharacterFromKeyCode(KeyboardCode key_code, int flags) { | 135 base::char16 GetCharacterFromKeyCode(KeyboardCode key_code, int flags) { |
| 130 ui::DomKey dom_key; | 136 ui::DomKey dom_key; |
| 131 base::char16 character; | 137 base::char16 character; |
| 132 if (GetMeaningFromKeyCode(key_code, flags, &dom_key, &character)) | 138 if (GetMeaningFromKeyCode(key_code, flags, &dom_key, &character)) |
| 133 return character; | 139 return character; |
| 134 return 0; | 140 return 0; |
| 135 } | 141 } |
| 136 | 142 |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 254 *character = (shift && p->shift_character) ? p->shift_character | 260 *character = (shift && p->shift_character) ? p->shift_character |
| 255 : p->plain_character; | 261 : p->plain_character; |
| 256 return true; | 262 return true; |
| 257 } | 263 } |
| 258 } | 264 } |
| 259 *dom_key = DomKey::UNIDENTIFIED; | 265 *dom_key = DomKey::UNIDENTIFIED; |
| 260 *character = 0; | 266 *character = 0; |
| 261 return false; | 267 return false; |
| 262 } | 268 } |
| 263 | 269 |
| 270 // Determine the non-located VKEY corresponding to a located VKEY. | |
|
kpschoedel
2015/01/09 20:25:40
This functionality, used by Ozone keyboard layout,
Wez
2015/01/13 03:08:36
Acknowledged.
| |
| 271 KeyboardCode LocatedToNonLocatedKeyboardCode(KeyboardCode key_code) { | |
|
Wez
2015/01/10 02:06:28
nit: Could/should this method output the Location
Wez
2015/01/10 02:06:28
Since you handle numeric pad keys in the reverse m
kpschoedel
2015/01/12 16:34:06
There is not currently a ui::Event-level analogue
kpschoedel
2015/01/12 16:34:06
I'll do that in a follow-up CL, since it's a behav
Wez
2015/01/13 03:08:36
Arguably not worth it unless we actually need it.
Wez
2015/01/13 03:08:36
Acknowledged.
kpschoedel
2015/01/13 16:21:08
This is mostly implemented and should trickle in t
| |
| 272 switch (key_code) { | |
| 273 case VKEY_RWIN: | |
| 274 return VKEY_LWIN; | |
| 275 case VKEY_LSHIFT: | |
| 276 case VKEY_RSHIFT: | |
| 277 return VKEY_SHIFT; | |
| 278 case VKEY_LCONTROL: | |
| 279 case VKEY_RCONTROL: | |
| 280 return VKEY_CONTROL; | |
| 281 case VKEY_LMENU: | |
| 282 case VKEY_RMENU: | |
| 283 return VKEY_MENU; | |
| 284 default: | |
| 285 return key_code; | |
| 286 } | |
| 287 } | |
| 288 | |
| 289 // Determine the located VKEY corresponding to a non-located VKEY. | |
| 290 KeyboardCode NonLocatedToLocatedKeyboardCode(KeyboardCode key_code, | |
| 291 DomCode dom_code) { | |
| 292 switch (key_code) { | |
| 293 case VKEY_SHIFT: | |
| 294 return IsRightSideDomCode(dom_code) ? VKEY_RSHIFT : VKEY_LSHIFT; | |
| 295 case VKEY_CONTROL: | |
| 296 return IsRightSideDomCode(dom_code) ? VKEY_RCONTROL : VKEY_LCONTROL; | |
| 297 case VKEY_MENU: | |
| 298 return IsRightSideDomCode(dom_code) ? VKEY_RMENU : VKEY_LMENU; | |
| 299 case VKEY_LWIN: | |
| 300 return IsRightSideDomCode(dom_code) ? VKEY_RWIN : VKEY_LWIN; | |
| 301 case VKEY_0: | |
| 302 return (dom_code == DomCode::NUMPAD0) ? VKEY_NUMPAD0 : VKEY_0; | |
| 303 case VKEY_1: | |
| 304 return (dom_code == DomCode::NUMPAD1) ? VKEY_NUMPAD1 : VKEY_1; | |
| 305 case VKEY_2: | |
| 306 return (dom_code == DomCode::NUMPAD2) ? VKEY_NUMPAD2 : VKEY_2; | |
| 307 case VKEY_3: | |
| 308 return (dom_code == DomCode::NUMPAD3) ? VKEY_NUMPAD3 : VKEY_3; | |
| 309 case VKEY_4: | |
| 310 return (dom_code == DomCode::NUMPAD4) ? VKEY_NUMPAD4 : VKEY_4; | |
| 311 case VKEY_5: | |
| 312 return (dom_code == DomCode::NUMPAD5) ? VKEY_NUMPAD5 : VKEY_5; | |
| 313 case VKEY_6: | |
| 314 return (dom_code == DomCode::NUMPAD6) ? VKEY_NUMPAD6 : VKEY_6; | |
| 315 case VKEY_7: | |
| 316 return (dom_code == DomCode::NUMPAD7) ? VKEY_NUMPAD7 : VKEY_7; | |
| 317 case VKEY_8: | |
| 318 return (dom_code == DomCode::NUMPAD8) ? VKEY_NUMPAD8 : VKEY_8; | |
| 319 case VKEY_9: | |
| 320 return (dom_code == DomCode::NUMPAD9) ? VKEY_NUMPAD9 : VKEY_9; | |
| 321 default: | |
| 322 return key_code; | |
| 323 } | |
| 324 } | |
| 325 | |
| 264 } // namespace ui | 326 } // namespace ui |
| OLD | NEW |