commit 5dd37a7109ee2e5467287f69755480ad613fa83a
parent 720e2b4cfce703b870788de283be21e50c22096f
Author: Raymond Li <hi@raymond.li>
Date: Mon, 8 Jun 2020 18:38:55 -0400
Merge pull request #170 from cptpcrd/volume-keys
Add --pass-volume-keys option to just pass volume keys
Diffstat:
2 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/i3lock.1 b/i3lock.1
@@ -200,6 +200,11 @@ Allow the following keys to be used while the screen is locked by passing them t
XF86PowerDown, XF86PowerOff, XF86Sleep.
.TP
+.B \-\-pass\-volume\-keys
+Allow the following keys to be used while the screen is locked by passing them through:
+XF86AudioMute, XF86AudioLowerVolume, XF86AudioRaiseVolume.
+
+.TP
.B \-\-insidevercolor=rrggbbaa
Sets the interior circle color while the password is being verified.
diff --git a/i3lock.c b/i3lock.c
@@ -236,6 +236,7 @@ bool skip_repeated_empty_password = false;
bool pass_media_keys = false;
bool pass_screen_keys = false;
bool pass_power_keys = false;
+bool pass_volume_keys = false;
// for the rendering thread, so we can clean it up
pthread_t draw_thread;
@@ -700,6 +701,17 @@ static void handle_key_press(xcb_key_press_event_t *event) {
}
}
+ // volume keys
+ if (pass_volume_keys) {
+ switch(ksym) {
+ 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:
@@ -1467,6 +1479,7 @@ int main(int argc, char *argv[]) {
{"pass-media-keys", no_argument, NULL, 601},
{"pass-screen-keys", no_argument, NULL, 602},
{"pass-power-keys", no_argument, NULL, 603},
+ {"pass-volume-keys", no_argument, NULL, 604},
// bar indicator stuff
{"bar-indicator", no_argument, NULL, 700},
@@ -1943,6 +1956,9 @@ int main(int argc, char *argv[]) {
case 603:
pass_power_keys = true;
break;
+ case 604:
+ pass_volume_keys = true;
+ break;
// Bar indicator
case 700: