aboutsummaryrefslogtreecommitdiffstats
path: root/src/key_code.rs
blob: c25f0f3bd64318820c4be86e0295e0492d3a1d00 (plain)
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
use core_graphics::event::CGEventFlags;

// pub struct KeyCode {
// }
//
// impl KeyCode {
//     pub const VOLUME_UP: CGKeyCode = 0x48;
//     pub const VOLUME_DOWN: CGKeyCode = 0x49;
//     pub const MUTE: CGKeyCode = 0x4A;
// }
//
// impl From<KeyCode> for CGKeyCode {
//     fn from(code: KeyCode) -> CGKeyCode {
//         match code {
//             KeyCode::F1 => event::KeyCode::F1,
//         }
//     }
// }

#[link(name="dome_key_event_source_simulator", kind="static")]
extern "C" {
    pub fn dkess_press_key(key: i16, modifier_flags: CGEventFlags);
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    #[ignore]
    fn dkess_press_key_presses_play_key() {
        use core_graphics::event::CGEventFlags;

        unsafe {
            const NX_KEYTYPE_PLAY: i16 = 16;
            dkess_press_key(NX_KEYTYPE_PLAY, CGEventFlags::CGEventFlagNull);
        }
    }
}

//   kVK_F13                       = 0x69,
//   kVK_F14                       = 0x6B,
//   kVK_F15                       = 0x71,
//   kVK_F16                       = 0x6A,
//   kVK_F17                       = 0x40,
//   kVK_F18                       = 0x4F,
//   kVK_F19                       = 0x50,
//   kVK_F20                       = 0x5A,
//
// enum {
//   kVK_Return                    = 0x24,
//   kVK_Tab                       = 0x30,
//   kVK_Space                     = 0x31,
//   kVK_Delete                    = 0x33,
//   kVK_Escape                    = 0x35,
//   kVK_Command                   = 0x37,
//   kVK_Shift                     = 0x38,
//   kVK_CapsLock                  = 0x39,
//   kVK_Option                    = 0x3A,
//   kVK_Control                   = 0x3B,
//   kVK_RightCommand              = 0x36,
//   kVK_RightShift                = 0x3C,
//   kVK_RightOption               = 0x3D,
//   kVK_RightControl              = 0x3E,
//   kVK_Function                  = 0x3F,
//   kVK_F17                       = 0x40,
//   kVK_VolumeUp                  = 0x48,
//   kVK_VolumeDown                = 0x49,
//   kVK_Mute                      = 0x4A,
//   kVK_F18                       = 0x4F,
//   kVK_F19                       = 0x50,
//   kVK_F20                       = 0x5A,
//   kVK_F5                        = 0x60,
//   kVK_F6                        = 0x61,
//   kVK_F7                        = 0x62,
//   kVK_F3                        = 0x63,
//   kVK_F8                        = 0x64,
//   kVK_F9                        = 0x65,
//   kVK_F11                       = 0x67,
//   kVK_F13                       = 0x69,
//   kVK_F16                       = 0x6A,
//   kVK_F14                       = 0x6B,
//   kVK_F10                       = 0x6D,
//   kVK_F12                       = 0x6F,
//   kVK_F15                       = 0x71,
//   kVK_Help                      = 0x72,
//   kVK_Home                      = 0x73,
//   kVK_PageUp                    = 0x74,
//   kVK_ForwardDelete             = 0x75,
//   kVK_F4                        = 0x76,
//   kVK_End                       = 0x77,
//   kVK_F2                        = 0x78,
//   kVK_PageDown                  = 0x79,
//   kVK_F1                        = 0x7A,
//   kVK_LeftArrow                 = 0x7B,
//   kVK_RightArrow                = 0x7C,
//   kVK_DownArrow                 = 0x7D,
//   kVK_UpArrow                   = 0x7E
// };


// #define NX_NOSPECIALKEY			0xFFFF
// #define NX_KEYTYPE_SOUND_UP		0
// #define NX_KEYTYPE_SOUND_DOWN		1
// #define NX_KEYTYPE_BRIGHTNESS_UP	2
// #define NX_KEYTYPE_BRIGHTNESS_DOWN	3
// #define NX_KEYTYPE_CAPS_LOCK		4
// #define NX_KEYTYPE_HELP			5
// #define NX_POWER_KEY			6
// #define	NX_KEYTYPE_MUTE			7
// #define NX_UP_ARROW_KEY			8
// #define NX_DOWN_ARROW_KEY		9
// #define NX_KEYTYPE_NUM_LOCK		10
//
// #define NX_KEYTYPE_CONTRAST_UP		11
// #define NX_KEYTYPE_CONTRAST_DOWN	12
// #define NX_KEYTYPE_LAUNCH_PANEL		13
// #define NX_KEYTYPE_EJECT		14
// #define NX_KEYTYPE_VIDMIRROR		15
//
// #define NX_KEYTYPE_PLAY			16
// #define NX_KEYTYPE_NEXT			17
// #define NX_KEYTYPE_PREVIOUS		18
// #define NX_KEYTYPE_FAST			19
// #define NX_KEYTYPE_REWIND		20
//
// #define NX_KEYTYPE_ILLUMINATION_UP	21
// #define NX_KEYTYPE_ILLUMINATION_DOWN	22
// #define NX_KEYTYPE_ILLUMINATION_TOGGLE	23


pub type NXKey = i16;

// /System/Library/Frameworks/IOKit.framework/Versions/A/Headers/hidsystem/ev_keymap.h
pub const NX_KEYTYPE_SOUND_UP: NXKey = 0;
pub const NX_KEYTYPE_SOUND_DOWN: NXKey = 1;
pub const NX_KEYTYPE_BRIGHTNESS_UP: NXKey = 2;
pub const NX_KEYTYPE_BRIGHTNESS_DOWN: NXKey = 3;
pub const NX_KEYTYPE_HELP: NXKey = 5;
pub const NX_POWER_KEY: NXKey = 6;
pub const NX_KEYTYPE_MUTE: NXKey = 7;
pub const NX_KEYTYPE_NUM_LOCK: NXKey = 10;

pub const NX_KEYTYPE_CONTRAST_UP: NXKey = 11;
pub const NX_KEYTYPE_CONTRAST_DOWN: NXKey = 12;
pub const NX_KEYTYPE_EJECT: NXKey = 14;
pub const NX_KEYTYPE_VIDMIRROR: NXKey = 15;

pub const NX_KEYTYPE_PLAY: NXKey = 16;
pub const NX_KEYTYPE_NEXT: NXKey = 17;
pub const NX_KEYTYPE_PREVIOUS: NXKey = 18;
pub const NX_KEYTYPE_FAST: NXKey = 19;
pub const NX_KEYTYPE_REWIND: NXKey = 20;

pub const NX_KEYTYPE_ILLUMINATION_UP: NXKey = 21;
pub const NX_KEYTYPE_ILLUMINATION_DOWN: NXKey = 22;
pub const NX_KEYTYPE_ILLUMINATION_TOGGLE: NXKey = 23;