diff options
author | Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> | 2022-10-04 23:48:54 +0000 |
---|---|---|
committer | Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> | 2022-10-04 23:48:54 +0000 |
commit | b293372ee1f55c5583df0574ed6613ede5acf788 (patch) | |
tree | ffe5c21aa63eb606b3fea2539b017d98be31855e /sys/src/cmd/reform/shortcuts.c | |
parent | d2049c206c14fad18cd307d1e6fc2b319c95f581 (diff) |
reform/shortcuts: change to use available media keys via Hyper
Diffstat (limited to 'sys/src/cmd/reform/shortcuts.c')
-rw-r--r-- | sys/src/cmd/reform/shortcuts.c | 59 |
1 files changed, 38 insertions, 21 deletions
diff --git a/sys/src/cmd/reform/shortcuts.c b/sys/src/cmd/reform/shortcuts.c index dc3fdc85f..f266c089b 100644 --- a/sys/src/cmd/reform/shortcuts.c +++ b/sys/src/cmd/reform/shortcuts.c @@ -1,22 +1,37 @@ #include <u.h> #include <libc.h> #include <keyboard.h> +#include <plumb.h> static int lightstep = 5, volstep = 3; static int light, vol, actl, mod; static void +aplumb(char *s) +{ + int f; + + if((f = plumbopen("send", OWRITE)) >= 0){ + if(plumbsendtext(f, "shortcuts", "audio", "/", s) < 0) + fprint(2, "aplumb: %r\n"); + close(f); + }else{ + fprint(2, "aplumb: %r\n"); + } +} + +static void process(char *s) { char b[128], *p; - int n, o; + int n, o, skip; Rune r; - if(*s == 'K' && s[1] == 0) - mod = 0; - o = 0; b[o++] = *s; + if(*s == 'k' || *s == 'K') + mod = utfrune(s+1, Kmod4) != nil; + for(p = s+1; *p != 0; p += n){ if((n = chartorune(&r, p)) == 1 && r == Runeerror){ /* bail out */ @@ -27,31 +42,33 @@ process(char *s) break; } - if(*s == 'k' && r == Kmod4){ - mod = 1; - }else if(*s == 'K'){ - if(mod && r >= (KF|1) && r <= (KF|4)) - continue; - if(r == Kmod4) - mod = 0; - }else if(mod && ((r >= (KF|1) && r <= (KF|4) || r == Kesc))){ - if(*s == 'c'){ - if(r == (KF|1)) + skip = 0; + if(*s == 'c'){ + if(mod){ + if(skip |= (r == (KF|1))) fprint(light, "lcd %+d", -lightstep); - else if(r == (KF|2)) + else if(skip |= (r == (KF|2))) fprint(light, "lcd %+d", lightstep); - else if(r == (KF|3)) + }else{ + if(skip |= (r == Kvoldn)) fprint(vol, "master %+d", -volstep); - else if(r == (KF|4)) + else if(skip |= (r == Kvolup)) fprint(vol, "master %+d", volstep); - else if(r == Kesc) + else if(skip |= (r == Kmute)) fprint(actl, "master toggle"); + else if(skip |= (r == Ksbwd)) + aplumb("key <"); + else if(skip |= (r == Ksfwd)) + aplumb("key >"); + else if(skip |= (r == Kpause)) + aplumb("key p"); } - continue; } - memmove(b+o, p, n); - o += n; + if(!skip){ + memmove(b+o, p, n); + o += n; + } } /* all runes filtered out - ignore completely */ |