amical/packages/native-helpers/swift-helper/Sources/SwiftHelper/KeycodeMap.swift
2025-12-21 11:02:00 +05:30

91 lines
1.4 KiB
Swift

import Foundation
/// macOS CGKeyCode to key name mapping
/// Matches the TypeScript keycode-map.ts for consistency
private let macOSKeycodeToKey: [Int: String] = [
// Letters
0: "A",
1: "S",
2: "D",
3: "F",
4: "H",
5: "G",
6: "Z",
7: "X",
8: "C",
9: "V",
11: "B",
12: "Q",
13: "W",
14: "E",
15: "R",
16: "Y",
17: "T",
31: "O",
32: "U",
34: "I",
35: "P",
37: "L",
38: "J",
40: "K",
45: "N",
46: "M",
// Numbers
18: "1",
19: "2",
20: "3",
21: "4",
22: "6",
23: "5",
25: "9",
26: "7",
28: "8",
29: "0",
// Special keys
48: "Tab",
49: "Space",
51: "Delete",
52: "Enter",
53: "Escape",
// Function keys
122: "F1",
120: "F2",
99: "F3",
118: "F4",
96: "F5",
97: "F6",
98: "F7",
100: "F8",
101: "F9",
109: "F10",
103: "F11",
111: "F12",
// Arrow keys
123: "Left",
124: "Right",
125: "Down",
126: "Up",
// Punctuation and symbols
27: "-",
24: "=",
33: "[",
30: "]",
42: "\\",
41: ";",
39: "'",
43: ",",
47: ".",
44: "/",
50: "`",
]
/// Convert a macOS CGKeyCode to a key name string
/// Returns nil if the keycode is not mapped
func keyCodeToName(_ keyCode: Int) -> String? {
return macOSKeycodeToKey[keyCode]
}