add in media keys support from https://aur.archlinux.org/cgit/aur.git/tree/allow_media_keys.patch\?h\=i3lock-media-keys
This commit is contained in:
parent
3131486378
commit
9c3eaaf2f3
27
i3lock.c
27
i3lock.c
|
@ -22,6 +22,7 @@
|
|||
#include <stdint.h>
|
||||
#include <xcb/xcb.h>
|
||||
#include <xcb/xkb.h>
|
||||
#include <xcb/xproto.h>
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <assert.h>
|
||||
|
@ -203,6 +204,7 @@ cairo_surface_t *blur_img = NULL;
|
|||
bool tile = false;
|
||||
bool ignore_empty_password = false;
|
||||
bool skip_repeated_empty_password = false;
|
||||
bool pass_media_keys = false;
|
||||
|
||||
// for the rendering thread, so we can clean it up
|
||||
pthread_t draw_thread;
|
||||
|
@ -615,7 +617,23 @@ static void handle_key_press(xcb_key_press_event_t *event) {
|
|||
#else
|
||||
n = xkb_keysym_to_utf8(ksym, buffer, sizeof(buffer));
|
||||
#endif
|
||||
|
||||
// media keys
|
||||
if (pass_media_keys) {
|
||||
switch(ksym) {
|
||||
case XKB_KEY_XF86AudioPlay:
|
||||
case XKB_KEY_XF86AudioPause:
|
||||
case XKB_KEY_XF86AudioStop:
|
||||
case XKB_KEY_XF86AudioPrev:
|
||||
case XKB_KEY_XF86AudioNext:
|
||||
case XKB_KEY_XF86AudioMute:
|
||||
case XKB_KEY_XF86AudioLowerVolume:
|
||||
case XKB_KEY_XF86AudioRaiseVolume:
|
||||
xcb_send_event(conn, true, screen->root, XCB_EVENT_MASK_BUTTON_PRESS, (char *)event);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// return/enter/etc
|
||||
switch (ksym) {
|
||||
case XKB_KEY_j:
|
||||
case XKB_KEY_m:
|
||||
|
@ -641,6 +659,7 @@ static void handle_key_press(xcb_key_press_event_t *event) {
|
|||
skip_repeated_empty_password = false;
|
||||
}
|
||||
|
||||
// backspace, esc, delete, etc
|
||||
switch (ksym) {
|
||||
case XKB_KEY_u:
|
||||
case XKB_KEY_Escape:
|
||||
|
@ -1165,6 +1184,7 @@ int main(int argc, char *argv[]) {
|
|||
{"redraw-thread", no_argument, NULL, 900},
|
||||
{"refresh-rate", required_argument, NULL, 901},
|
||||
{"composite", no_argument, NULL, 902},
|
||||
{"pass-media-keys", no_argument, NULL, 'm'},
|
||||
|
||||
{NULL, no_argument, NULL, 0}};
|
||||
|
||||
|
@ -1173,7 +1193,7 @@ int main(int argc, char *argv[]) {
|
|||
if ((username = pw->pw_name) == NULL)
|
||||
errx(EXIT_FAILURE, "pw->pw_name is NULL.\n");
|
||||
|
||||
char *optstring = "hvnbdc:p:ui:teI:frsS:kB:";
|
||||
char *optstring = "hvnbdc:p:ui:teI:frsS:kB:m";
|
||||
char *arg = NULL;
|
||||
int opt = 0;
|
||||
while ((o = getopt_long(argc, argv, optstring, longopts, &longoptind)) != -1) {
|
||||
|
@ -1616,6 +1636,9 @@ int main(int argc, char *argv[]) {
|
|||
case 902:
|
||||
composite = true;
|
||||
break;
|
||||
case 'm':
|
||||
pass_media_keys = true;
|
||||
break;
|
||||
case 999:
|
||||
debug_mode = true;
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue