From 9afa5bf6b8d2efcad47ae08dceed8755b21e0c54 Mon Sep 17 00:00:00 2001 From: dmitry Date: Sun, 7 Jan 2018 07:03:03 +0000 Subject: [PATCH] cocoa: additional key code mapping git-svn-id: trunk@57000 - --- lcl/interfaces/cocoa/cocoawscommon.pas | 48 ++++++++++++++++++++ lcl/interfaces/cocoa/mackeycodes.inc | 63 ++++++++++++++++++++++++++ 2 files changed, 111 insertions(+) diff --git a/lcl/interfaces/cocoa/cocoawscommon.pas b/lcl/interfaces/cocoa/cocoawscommon.pas index f89f30fc1a..e3021ee807 100644 --- a/lcl/interfaces/cocoa/cocoawscommon.pas +++ b/lcl/interfaces/cocoa/cocoawscommon.pas @@ -318,6 +318,52 @@ begin end; end; +function MacKeyToVK(KeyCode: Word): Word; // according to mackeycodes.inc this is risky +begin + case KeyCode of + MK_QWERTY_Q: Result := VK_Q; + MK_QWERTY_W: Result := VK_W; + MK_QWERTY_E: Result := VK_E; + MK_QWERTY_R: Result := VK_R; + MK_QWERTY_T: Result := VK_T; + MK_QWERTY_Y: Result := VK_Y; + MK_QWERTY_U: Result := VK_U; + MK_QWERTY_I: Result := VK_I; + MK_QWERTY_O: Result := VK_O; + MK_QWERTY_P: Result := VK_P; + MK_QWERTY_A: Result := VK_A; + MK_QWERTY_S: Result := VK_S; + MK_QWERTY_D: Result := VK_D; + MK_QWERTY_F: Result := VK_F; + MK_QWERTY_G: Result := VK_G; + MK_QWERTY_H: Result := VK_H; + MK_QWERTY_J: Result := VK_J; + MK_QWERTY_K: Result := VK_K; + MK_QWERTY_L: Result := VK_L; + MK_QWERTY_Z: Result := VK_Z; + MK_QWERTY_X: Result := VK_X; + MK_QWERTY_C: Result := VK_C; + MK_QWERTY_V: Result := VK_V; + MK_QWERTY_B: Result := VK_B; + MK_QWERTY_N: Result := VK_N; + MK_QWERTY_M: Result := VK_M; + //MK_QWERTY_LEFTBR: Result := VK_; + //MK_QWERTY_RIGHTBR: = 30; + MK_QWERTY_BACKSLASH: Result := VK_BACK; + + //MK_QWERTY_SEMICOLON: Result := VK_s + //MK_QWERTY_QUOTE: = 39; + //MK_QWERTY_ENTER: = 36; + + //MK_QWERTY_COMMA: := 43; + //MK_QWERTY_PERIOD: := 47; + //MK_QWERTY_FRWSLASH: := 44; + + else + Result:=VK_UNKNOWN; + end; +end; + function TLCLCommonCallback.KeyEvent(Event: NSEvent; AForceAsKeyDown: Boolean): Boolean; var @@ -473,6 +519,8 @@ var MK_COMMA: VKKeyCode := VK_OEM_COMMA; MK_PERIOD: VKKeyCode := VK_OEM_PERIOD; MK_SLASH: VKKeyCode := VK_OEM_2; + else + VKKeyCode := MacKeyToVK(KeyCode); // according to mackeycodes.inc this is risky end; end; diff --git a/lcl/interfaces/cocoa/mackeycodes.inc b/lcl/interfaces/cocoa/mackeycodes.inc index b3b9932fba..610b628e21 100644 --- a/lcl/interfaces/cocoa/mackeycodes.inc +++ b/lcl/interfaces/cocoa/mackeycodes.inc @@ -91,3 +91,66 @@ const MK_PERIOD = 47; // . > key MK_SLASH = 44; // / ? key + // ANSI US (QWERTY) Keyboard + + MK_QWERTY_Q = 12; + MK_QWERTY_W = 13; + MK_QWERTY_E = 14; + MK_QWERTY_R = 15; + MK_QWERTY_T = 17; + MK_QWERTY_Y = 16; + MK_QWERTY_U = 32; + MK_QWERTY_I = 34; + MK_QWERTY_O = 31; + MK_QWERTY_P = 35; + MK_QWERTY_LEFTBR = 33; + MK_QWERTY_RIGHTBR = 30; + MK_QWERTY_BACKSLASH = 42; + + MK_QWERTY_A = 0; + MK_QWERTY_S = 1; + MK_QWERTY_D = 2; + MK_QWERTY_F = 3; + MK_QWERTY_G = 5; + MK_QWERTY_H = 4; + MK_QWERTY_J = 38; + MK_QWERTY_K = 40; + MK_QWERTY_L = 37; + MK_QWERTY_SEMICOLON = 41; + MK_QWERTY_QUOTE = 39; + MK_QWERTY_ENTER = 36; + + MK_QWERTY_Z = 6; + MK_QWERTY_X = 7; + MK_QWERTY_C = 8; + MK_QWERTY_V = 9; + MK_QWERTY_B = 11; + MK_QWERTY_N = 45; + MK_QWERTY_M = 46; + MK_QWERTY_COMMA = 43; + MK_QWERTY_PERIOD = 47; + MK_QWERTY_FRWSLASH = 44; + + MK_QWERTY_TILDE = 50; + MK_QWERTY_1 = 18; + MK_QWERTY_2 = 19; + MK_QWERTY_3 = 20; + MK_QWERTY_4 = 21; + MK_QWERTY_5 = 23; + MK_QWERTY_6 = 22; + MK_QWERTY_7 = 26; + MK_QWERTY_8 = 28; + MK_QWERTY_9 = 25; + MK_QWERTY_0 = 29; + MK_QWERTY_MINUS = 27; + MK_QWERTY_EQUAL = 24; + MK_QWERTY_BACKSP = 51; + + MK_QWERTY_NUMSLASH = 75; + MK_QWERTY_NUMSTAR = 67; + MK_QWERTY_NUMMINUS = 78; + MK_QWERTY_NUMPLUS = 69; + MK_QWERTY_NUMENTER = 76; + + MK_QWERTY_CONTEXTMENU = 110; +