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 3 // found in the LICENSE file. 4 5 #include "ui/events/keycodes/keyboard_code_conversion_win.h" 6 #include "ui/events/keycodes/dom/keycode_converter.h" 7 8 namespace ui { 9 10 namespace { 11 12 const WORD kAltPrintScreenScanCode = 0x0054; 13 const WORD kPrintScreenScanCode = 0xe037; 14 const WORD kCtrlPauseScanCode = 0xe046; 15 const WORD kPauseScanCode = 0x0045; 16 const WORD kHanjaKeyKoreanLayoutScanCode = 0xe0f1; 17 const WORD kHanjaKeyScanCode = 0x0071; 18 const WORD kHanYeongKeyKoreanLayoutScanCode = 0xe0f2; 19 const WORD kHanYeongKeyScanCode = 0x0072; 20 21 } // namespace 22 WindowsKeyCodeForKeyboardCode(KeyboardCode keycode)23WORD WindowsKeyCodeForKeyboardCode(KeyboardCode keycode) { 24 return static_cast<WORD>(keycode); 25 } 26 KeyboardCodeForWindowsKeyCode(WORD keycode)27KeyboardCode KeyboardCodeForWindowsKeyCode(WORD keycode) { 28 return static_cast<KeyboardCode>(keycode); 29 } 30 CodeForWindowsScanCode(WORD scan_code)31DomCode CodeForWindowsScanCode(WORD scan_code) { 32 // There are a few instances where multiple scancodes map to the same 33 // physical key. Instead of teaching the NativeKeyCode table to support 34 // multiple values; we do this simple translation before calling it. 35 switch (scan_code) { 36 case kAltPrintScreenScanCode: 37 scan_code = kPrintScreenScanCode; 38 break; 39 case kCtrlPauseScanCode: 40 scan_code = kPauseScanCode; 41 break; 42 case kHanjaKeyKoreanLayoutScanCode: 43 scan_code = kHanjaKeyScanCode; 44 break; 45 case kHanYeongKeyKoreanLayoutScanCode: 46 scan_code = kHanYeongKeyScanCode; 47 break; 48 } 49 50 return ui::KeycodeConverter::NativeKeycodeToDomCode(scan_code); 51 } 52 53 } // namespace ui 54