Skip to content

Instantly share code, notes, and snippets.

@gsidhu
Created September 19, 2025 10:38
Show Gist options
  • Select an option

  • Save gsidhu/b8c551236c676fc4eca99be657d117da to your computer and use it in GitHub Desktop.

Select an option

Save gsidhu/b8c551236c676fc4eca99be657d117da to your computer and use it in GitHub Desktop.
AppKit NSEvent keyCode List

Source: https://boredzo.org/blog/archives/2007-05-22/virtual-key-codes#comment-523980

Apple's Developer Documentation: https://developer.apple.com/documentation/appkit/nsevent/keycode/

Key Code
KEY_A 0
KEY_S 1
KEY_D 2
KEY_F 3
KEY_H 4
KEY_G 5
KEY_Z 6
KEY_X 7
KEY_C 8
KEY_V 9
KEY_B 11
KEY_Q 12
KEY_W 13
KEY_E 14
KEY_R 15
KEY_Y 16
KEY_T 17
KEY_1 18
KEY_2 19
KEY_3 20
KEY_4 21
KEY_6 22
KEY_5 23
KEY_EQUALS 24
KEY_9 25
KEY_7 26
KEY_MINUS 27
KEY_8 28
KEY_0 29
KEY_RIGHTBRACKET 30
KEY_O 31
KEY_U 32
KEY_LEFTBRACKET 33
KEY_I 34
KEY_P 35
KEY_RETURN 36
KEY_L 37
KEY_J 38
KEY_APOSTROPHE 39
KEY_K 40
KEY_SEMICOLON 41
KEY_FRONTSLASH 42
KEY_COMMA 43
KEY_BACKSLASH 44
KEY_N 45
KEY_M 46
KEY_PERIOD 47
KEY_TAB 48
KEY_BACKAPOSTROPHE 50
KEY_DELETE 51
KEY_ESCAPE 53
KEY_COMMAND 55
KEY_SHIFT 56
KEY_CAPSLOCK 57
KEY_OPTION 58
KEY_CONTROL 59
KEY_UP 126
KEY_DOWN 125
KEY_LEFT 123
KEY_RIGHT 124

Example Usage

import SwiftUI
import AppKit

struct ContentView: View {
    let documents: [Document]
    var body: some View {
        Table() {
              TableColumn("Name", value: \.name) { doc in
                  Text(doc.name)
              }
              TableColumn("Size", value: \.size) { doc in
                  Text("\(formatter.string(fromByteCount: Int64(doc.size)))")
              }
              .width(min: 50)
        } rows: {
              TableRow(doc)
        }
        .onAppear {
            NSEvent.addLocalMonitorForEvents(matching: .keyDown) { event in
                switch event.keyCode {
                case 31: // Cmd + O
                    if event.modifierFlags.contains(.command) {
                        openPathInFinder()
                        return nil // consume the event
                    }
                    return event

                default:
                    return event
                }
            }
        }

    }
}

func openPathInFinder(path: String) {
    let url = path.map { URL(fileURLWithPath: $0) }
    NSWorkspace.shared.activateFileViewerSelecting([url])
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment