Last active
October 22, 2024 15:30
-
-
Save swillits/df648e87016772c7f7e5dbed2b345066 to your computer and use it in GitHub Desktop.
Swift Keyboard Keycodes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct Keycode { | |
// Layout-independent Keys | |
// eg.These key codes are always the same key on all layouts. | |
static let returnKey : UInt16 = 0x24 | |
static let enter : UInt16 = 0x4C | |
static let tab : UInt16 = 0x30 | |
static let space : UInt16 = 0x31 | |
static let delete : UInt16 = 0x33 | |
static let escape : UInt16 = 0x35 | |
static let command : UInt16 = 0x37 | |
static let shift : UInt16 = 0x38 | |
static let capsLock : UInt16 = 0x39 | |
static let option : UInt16 = 0x3A | |
static let control : UInt16 = 0x3B | |
static let rightCommand : UInt16 = 0x36 | |
static let rightShift : UInt16 = 0x3C | |
static let rightOption : UInt16 = 0x3D | |
static let rightControl : UInt16 = 0x3E | |
static let leftArrow : UInt16 = 0x7B | |
static let rightArrow : UInt16 = 0x7C | |
static let downArrow : UInt16 = 0x7D | |
static let upArrow : UInt16 = 0x7E | |
static let volumeUp : UInt16 = 0x48 | |
static let volumeDown : UInt16 = 0x49 | |
static let mute : UInt16 = 0x4A | |
static let help : UInt16 = 0x72 | |
static let home : UInt16 = 0x73 | |
static let pageUp : UInt16 = 0x74 | |
static let forwardDelete : UInt16 = 0x75 | |
static let end : UInt16 = 0x77 | |
static let pageDown : UInt16 = 0x79 | |
static let function : UInt16 = 0x3F | |
static let f1 : UInt16 = 0x7A | |
static let f2 : UInt16 = 0x78 | |
static let f4 : UInt16 = 0x76 | |
static let f5 : UInt16 = 0x60 | |
static let f6 : UInt16 = 0x61 | |
static let f7 : UInt16 = 0x62 | |
static let f3 : UInt16 = 0x63 | |
static let f8 : UInt16 = 0x64 | |
static let f9 : UInt16 = 0x65 | |
static let f10 : UInt16 = 0x6D | |
static let f11 : UInt16 = 0x67 | |
static let f12 : UInt16 = 0x6F | |
static let f13 : UInt16 = 0x69 | |
static let f14 : UInt16 = 0x6B | |
static let f15 : UInt16 = 0x71 | |
static let f16 : UInt16 = 0x6A | |
static let f17 : UInt16 = 0x40 | |
static let f18 : UInt16 = 0x4F | |
static let f19 : UInt16 = 0x50 | |
static let f20 : UInt16 = 0x5A | |
// US-ANSI Keyboard Positions | |
// eg. These key codes are for the physical key (in any keyboard layout) | |
// at the location of the named key in the US-ANSI layout. | |
static let a : UInt16 = 0x00 | |
static let b : UInt16 = 0x0B | |
static let c : UInt16 = 0x08 | |
static let d : UInt16 = 0x02 | |
static let e : UInt16 = 0x0E | |
static let f : UInt16 = 0x03 | |
static let g : UInt16 = 0x05 | |
static let h : UInt16 = 0x04 | |
static let i : UInt16 = 0x22 | |
static let j : UInt16 = 0x26 | |
static let k : UInt16 = 0x28 | |
static let l : UInt16 = 0x25 | |
static let m : UInt16 = 0x2E | |
static let n : UInt16 = 0x2D | |
static let o : UInt16 = 0x1F | |
static let p : UInt16 = 0x23 | |
static let q : UInt16 = 0x0C | |
static let r : UInt16 = 0x0F | |
static let s : UInt16 = 0x01 | |
static let t : UInt16 = 0x11 | |
static let u : UInt16 = 0x20 | |
static let v : UInt16 = 0x09 | |
static let w : UInt16 = 0x0D | |
static let x : UInt16 = 0x07 | |
static let y : UInt16 = 0x10 | |
static let z : UInt16 = 0x06 | |
static let zero : UInt16 = 0x1D | |
static let one : UInt16 = 0x12 | |
static let two : UInt16 = 0x13 | |
static let three : UInt16 = 0x14 | |
static let four : UInt16 = 0x15 | |
static let five : UInt16 = 0x17 | |
static let six : UInt16 = 0x16 | |
static let seven : UInt16 = 0x1A | |
static let eight : UInt16 = 0x1C | |
static let nine : UInt16 = 0x19 | |
static let equals : UInt16 = 0x18 | |
static let minus : UInt16 = 0x1B | |
static let semicolon : UInt16 = 0x29 | |
static let apostrophe : UInt16 = 0x27 | |
static let comma : UInt16 = 0x2B | |
static let period : UInt16 = 0x2F | |
static let forwardSlash : UInt16 = 0x2C | |
static let backslash : UInt16 = 0x2A | |
static let grave : UInt16 = 0x32 | |
static let leftBracket : UInt16 = 0x21 | |
static let rightBracket : UInt16 = 0x1E | |
static let keypadDecimal : UInt16 = 0x41 | |
static let keypadMultiply : UInt16 = 0x43 | |
static let keypadPlus : UInt16 = 0x45 | |
static let keypadClear : UInt16 = 0x47 | |
static let keypadDivide : UInt16 = 0x4B | |
static let keypadEnter : UInt16 = 0x4C | |
static let keypadMinus : UInt16 = 0x4E | |
static let keypadEquals : UInt16 = 0x51 | |
static let keypad0 : UInt16 = 0x52 | |
static let keypad1 : UInt16 = 0x53 | |
static let keypad2 : UInt16 = 0x54 | |
static let keypad3 : UInt16 = 0x55 | |
static let keypad4 : UInt16 = 0x56 | |
static let keypad5 : UInt16 = 0x57 | |
static let keypad6 : UInt16 = 0x58 | |
static let keypad7 : UInt16 = 0x59 | |
static let keypad8 : UInt16 = 0x5B | |
static let keypad9 : UInt16 = 0x5C | |
} |
Hey :) Thank you very much for this snippet... Is there any way to create CGEvent
with desired keyboard layout? Like not needing to change keyboard layout to US before virtually pressing the key?
Hello, how to convert this 0x24 and 0x4C to integer keycodes to write it on adb shell?
@rajabdearly They are both integers, but these are in hexadecimal notation. It would not surprise me if you can also use this notation in other places, but if not, 'converting' is easy: see for example https://www.rapidtables.com/convert/number/how-decimal-to-hex.html and https://www.rapidtables.com/convert/number/hex-to-decimal.html
Right Command is missing. Should be
static let rightCommand : UInt16 = 0x36
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for this gist. Note that the value 0x4C is mapped twice.
keypadEnter
seems to be more accurate for this value.enter
is commonly mapped to 0x24 (which is calledreturnKey
here).