-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathKeyCode.swift
More file actions
58 lines (56 loc) · 2.8 KB
/
Copy pathKeyCode.swift
File metadata and controls
58 lines (56 loc) · 2.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import Carbon.HIToolbox
/// A small wrapper around the kVK_ ANSI virtual-key constants we actually use.
/// Adding more is one-line — keep the list short and intentional.
enum KeyCode: UInt16, CaseIterable {
case a = 0 // kVK_ANSI_A
case c = 8 // kVK_ANSI_C
case v = 9 // kVK_ANSI_V
case f = 3 // kVK_ANSI_F
/// Best-effort human-readable label for an arbitrary virtual key code.
/// Used by the hotkey recorder to show the user what they bound.
static func label(forVirtualKey keyCode: UInt32) -> String {
switch Int(keyCode) {
case kVK_ANSI_A: return "A"; case kVK_ANSI_B: return "B"
case kVK_ANSI_C: return "C"; case kVK_ANSI_D: return "D"
case kVK_ANSI_E: return "E"; case kVK_ANSI_F: return "F"
case kVK_ANSI_G: return "G"; case kVK_ANSI_H: return "H"
case kVK_ANSI_I: return "I"; case kVK_ANSI_J: return "J"
case kVK_ANSI_K: return "K"; case kVK_ANSI_L: return "L"
case kVK_ANSI_M: return "M"; case kVK_ANSI_N: return "N"
case kVK_ANSI_O: return "O"; case kVK_ANSI_P: return "P"
case kVK_ANSI_Q: return "Q"; case kVK_ANSI_R: return "R"
case kVK_ANSI_S: return "S"; case kVK_ANSI_T: return "T"
case kVK_ANSI_U: return "U"; case kVK_ANSI_V: return "V"
case kVK_ANSI_W: return "W"; case kVK_ANSI_X: return "X"
case kVK_ANSI_Y: return "Y"; case kVK_ANSI_Z: return "Z"
case kVK_ANSI_0: return "0"; case kVK_ANSI_1: return "1"
case kVK_ANSI_2: return "2"; case kVK_ANSI_3: return "3"
case kVK_ANSI_4: return "4"; case kVK_ANSI_5: return "5"
case kVK_ANSI_6: return "6"; case kVK_ANSI_7: return "7"
case kVK_ANSI_8: return "8"; case kVK_ANSI_9: return "9"
case kVK_F1: return "F1"; case kVK_F2: return "F2"
case kVK_F3: return "F3"; case kVK_F4: return "F4"
case kVK_F5: return "F5"; case kVK_F6: return "F6"
case kVK_F7: return "F7"; case kVK_F8: return "F8"
case kVK_F9: return "F9"; case kVK_F10: return "F10"
case kVK_F11: return "F11"; case kVK_F12: return "F12"
case kVK_Space: return "␣"
case kVK_Return: return "↩"
case kVK_Escape: return "⎋"
case kVK_Tab: return "⇥"
case kVK_Delete: return "⌫"
case kVK_ANSI_Comma: return ","
case kVK_ANSI_Period: return "."
case kVK_ANSI_Slash: return "/"
case kVK_ANSI_Semicolon: return ";"
case kVK_ANSI_Quote: return "'"
case kVK_ANSI_Minus: return "-"
case kVK_ANSI_Equal: return "="
case kVK_ANSI_LeftBracket: return "["
case kVK_ANSI_RightBracket: return "]"
case kVK_ANSI_Backslash: return "\\"
case kVK_ANSI_Grave: return "`"
default: return "Key\(keyCode)"
}
}
}