Skip to content

Commit

Permalink
#33 initial support media-keys
Browse files Browse the repository at this point in the history
  • Loading branch information
koekeishiya committed May 13, 2018
1 parent 2849987 commit b84d878
Showing 1 changed file with 63 additions and 1 deletion.
64 changes: 63 additions & 1 deletion src/skhd.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,68 @@ internal EVENT_TAP_CALLBACK(key_handler)

if (result) return NULL;
} break;
case NX_SYSDEFINED: {
CFDataRef event_data = CGEventCreateData(kCFAllocatorDefault, event);
uint8_t *data = CFDataGetBytePtr(event_data);

#if 0
// NOTE(koekeishiya): dump raw event-data for reverse engineering
CFIndex length = CFDataGetLength(event_data);
for (int i = 0; i < length; ++i) {
if (i % 16 == 0) printf("\n");
printf("%02X ", data[i]);
}
#endif

uint8_t event_subtype = data[123];
if (event_subtype == 0x08) {
uint8_t key_code = data[129];
uint8_t key_state = data[130];
if (key_state == NX_KEYDOWN) {
switch (key_code) {
case NX_KEYTYPE_SOUND_UP: {
printf("pressed media_sound_up\n");
} break;
case NX_KEYTYPE_SOUND_DOWN: {
printf("pressed media_sound_down\n");
} break;
case NX_KEYTYPE_MUTE: {
printf("pressed media_mute\n");
} break;
case NX_KEYTYPE_PLAY: {
printf("pressed media_play\n");
} break;
case NX_KEYTYPE_PREVIOUS: {
printf("pressed media_prev\n");
} break;
case NX_KEYTYPE_NEXT: {
printf("pressed media_next\n");
} break;
case NX_KEYTYPE_REWIND: {
printf("pressed media_rewind\n");
} break;
case NX_KEYTYPE_FAST: {
printf("pressed media_fast\n");
} break;
case NX_KEYTYPE_BRIGHTNESS_UP: {
printf("pressed media_brightness_up\n");
} break;
case NX_KEYTYPE_BRIGHTNESS_DOWN: {
printf("pressed media_brightness_down\n");
} break;
case NX_KEYTYPE_ILLUMINATION_UP: {
printf("pressed media_brightness_up\n");
} break;
case NX_KEYTYPE_ILLUMINATION_DOWN: {
printf("pressed media_brightness_down\n");
} break;
default: {
printf("pressed system-key %d\n", key_code);
} break;
}
}
}
} break;
}
return event;
}
Expand Down Expand Up @@ -201,7 +263,7 @@ int main(int argc, char **argv)
signal(SIGCHLD, SIG_IGN);

struct event_tap event_tap;
event_tap.mask = (1 << kCGEventKeyDown);
event_tap.mask = (1 << kCGEventKeyDown) | CGEventMaskBit(NX_SYSDEFINED);
event_tap_begin(&event_tap, key_handler);

struct hotloader hotloader = {};
Expand Down

0 comments on commit b84d878

Please # to comment.