@@ -14,14 +14,15 @@ static io_connect_t _getAuxiliaryKeyDriver(void)
14
14
mach_port_t masterPort , service , iter ;
15
15
kern_return_t kr ;
16
16
17
- if (!sEventDrvrRef ) {
18
- kr = IOMasterPort ( bootstrap_port , & masterPort );
17
+ if (!sEventDrvrRef )
18
+ {
19
+ kr = IOMasterPort (bootstrap_port , & masterPort );
19
20
assert (KERN_SUCCESS == kr );
20
- kr = IOServiceGetMatchingServices (masterPort , IOServiceMatching ( kIOHIDSystemClass ), & iter );
21
+ kr = IOServiceGetMatchingServices (masterPort , IOServiceMatching (kIOHIDSystemClass ), & iter );
21
22
assert (KERN_SUCCESS == kr );
22
- service = IOIteratorNext ( iter );
23
+ service = IOIteratorNext (iter );
23
24
assert (service );
24
- kr = IOServiceOpen (service , mach_task_self (), kIOHIDParamConnectType , & sEventDrvrRef );
25
+ kr = IOServiceOpen (service , mach_task_self (), kIOHIDParamConnectType , & sEventDrvrRef );
25
26
assert (KERN_SUCCESS == kr );
26
27
IOObjectRelease (service );
27
28
IOObjectRelease (iter );
@@ -32,18 +33,21 @@ static io_connect_t _getAuxiliaryKeyDriver(void)
32
33
void toggleKeyCode (MMKeyCode code , const bool down , MMKeyFlags flags )
33
34
{
34
35
/* The media keys all have 1000 added to them to help us detect them. */
35
- if (code >= 1000 ) {
36
+ if (code >= 1000 )
37
+ {
36
38
code = code - 1000 ; /* Get the real keycode. */
37
- NXEventData event ;
39
+ NXEventData event ;
38
40
kern_return_t kr ;
39
- IOGPoint loc = { 0 , 0 };
40
- UInt32 evtInfo = code << 16 | (down ? NX_KEYDOWN : NX_KEYUP ) << 8 ;
41
+ IOGPoint loc = {0 , 0 };
42
+ UInt32 evtInfo = code << 16 | (down ? NX_KEYDOWN : NX_KEYUP ) << 8 ;
41
43
bzero (& event , sizeof (NXEventData ));
42
44
event .compound .subType = NX_SUBTYPE_AUX_CONTROL_BUTTONS ;
43
45
event .compound .misc .L [0 ] = evtInfo ;
44
- kr = IOHIDPostEvent ( _getAuxiliaryKeyDriver (), NX_SYSDEFINED , loc , & event , kNXEventDataVersion , 0 , FALSE );
45
- assert ( KERN_SUCCESS == kr );
46
- } else {
46
+ kr = IOHIDPostEvent (_getAuxiliaryKeyDriver (), NX_SYSDEFINED , loc , & event , kNXEventDataVersion , 0 , FALSE);
47
+ assert (KERN_SUCCESS == kr );
48
+ }
49
+ else
50
+ {
47
51
CGEventRef keyEvent = CGEventCreateKeyboardEvent (NULL , (CGKeyCode )code , down );
48
52
assert (keyEvent != NULL );
49
53
@@ -64,7 +68,8 @@ void toggleKey(char c, const bool down, MMKeyFlags flags)
64
68
{
65
69
MMKeyCode keyCode = keyCodeForChar (c );
66
70
67
- if (isupper (c ) && !(flags & MOD_SHIFT )) {
71
+ if (isupper (c ) && !(flags & MOD_SHIFT ))
72
+ {
68
73
flags |= MOD_SHIFT ; /* Not sure if this is safe for all layouts. */
69
74
}
70
75
@@ -85,20 +90,23 @@ void toggleUnicodeKey(unsigned long ch, const bool down)
85
90
* flags. It is therefore only used in typeString() and typeStringDelayed()
86
91
* -- if you need modifier keys, use the above functions instead. */
87
92
CGEventRef keyEvent = CGEventCreateKeyboardEvent (NULL , 0 , down );
88
- if (keyEvent == NULL ) {
93
+ if (keyEvent == NULL )
94
+ {
89
95
fputs ("Could not create keyboard event.\n" , stderr );
90
96
return ;
91
97
}
92
98
93
- if (ch > 0xFFFF ) {
99
+ if (ch > 0xFFFF )
100
+ {
94
101
// encode to utf-16 if necessary
95
102
unsigned short surrogates [] = {
96
103
0xD800 + ((ch - 0x10000 ) >> 10 ),
97
- 0xDC00 + (ch & 0x3FF )
98
- };
104
+ 0xDC00 + (ch & 0x3FF )};
99
105
100
106
CGEventKeyboardSetUnicodeString (keyEvent , 2 , & surrogates );
101
- } else {
107
+ }
108
+ else
109
+ {
102
110
CGEventKeyboardSetUnicodeString (keyEvent , 1 , & ch );
103
111
}
104
112
@@ -125,24 +133,32 @@ void typeString(const char *str)
125
133
unsigned short c3 ;
126
134
unsigned long n ;
127
135
128
- while (* str != '\0' ) {
136
+ while (* str != '\0' )
137
+ {
129
138
c = * str ++ ;
130
139
131
140
// warning, the following utf8 decoder
132
141
// doesn't perform validation
133
- if (c <= 0x7F ) {
142
+ if (c <= 0x7F )
143
+ {
134
144
// 0xxxxxxx one byte
135
145
n = c ;
136
- } else if ((c & 0xE0 ) == 0xC0 ) {
146
+ }
147
+ else if ((c & 0xE0 ) == 0xC0 )
148
+ {
137
149
// 110xxxxx two bytes
138
150
c1 = (* str ++ ) & 0x3F ;
139
151
n = ((c & 0x1F ) << 6 ) | c1 ;
140
- } else if ((c & 0xF0 ) == 0xE0 ) {
152
+ }
153
+ else if ((c & 0xF0 ) == 0xE0 )
154
+ {
141
155
// 1110xxxx three bytes
142
156
c1 = (* str ++ ) & 0x3F ;
143
157
c2 = (* str ++ ) & 0x3F ;
144
158
n = ((c & 0x0F ) << 12 ) | (c1 << 6 ) | c2 ;
145
- } else if ((c & 0xF8 ) == 0xF0 ) {
159
+ }
160
+ else if ((c & 0xF8 ) == 0xF0 )
161
+ {
146
162
// 11110xxx four bytes
147
163
c1 = (* str ++ ) & 0x3F ;
148
164
c2 = (* str ++ ) & 0x3F ;
@@ -163,7 +179,8 @@ void typeStringDelayed(const char *str, const unsigned cpm)
163
179
/* Average milli-seconds per character */
164
180
const double mspc = (cps == 0.0 ) ? 0.0 : 1000.0 / cps ;
165
181
166
- while (* str != '\0' ) {
182
+ while (* str != '\0' )
183
+ {
167
184
tapUniKey (* str ++ );
168
185
microsleep (mspc + (DEADBEEF_UNIFORM (0.0 , 62.5 )));
169
186
}
0 commit comments