ref: 7975f61707b3c581002a7e380c85c3169c2d24ac
parent: 367025839a92731aaa5f8234a9907216c465311f
author: qwx <qwx@sciops.net>
date: Mon Nov 3 04:23:32 EST 2025
add eui-keychan: add events channel for keys (obsolete)
--- /dev/null
+++ b/eui-keychan
@@ -1,0 +1,64 @@
+diff 3167f5f7e3d2363ab57a107c838e1c5ef1fcda80 uncommitted
+--- a/sys/src/games/eui.c
++++ b/sys/src/games/eui.c
+@@ -9,6 +9,7 @@
+ typedef struct Kfn Kfn;
+
+ u64int keys, keys2;
++Channel *keychan;
+ int trace, paused;
+ int savereq, loadreq;
+ QLock pauselock;
+@@ -57,7 +68,6 @@
+ Kfn *kp;
+
+ j = 1;
+-
+ for(;;){+ n = read(0, buf, sizeof(buf) - 1);
+ if(n <= 0)
+@@ -64,13 +74,18 @@
+ sysfatal("read: %r");+ buf[n] = 0;
+ n = getfields(buf, down, nelem(down), 1, " ");
++ if(n <= 0)
++ continue;
+ k = 0;
+ for(n--; n >= 0; n--){+ s = down[n];
+- if(strcmp(s, "joy1") == 0)
+- j = 1;
+- else if(strcmp(s, "joy2") == 0)
+- j = 2;
++ if(strncmp(s, "joy", 3) == 0){++ if(strcmp(s, "2 ") == 0)
++ j = 2;
++ else
++ j = 1;
++ continue;
++ }
+ for(kp=kkn.n; kp!=nil; kp=kp->n){+ if(strcmp(kp->joyk, s) == 0)
+ k |= kp->k;
+@@ -78,8 +93,11 @@
+ }
+ if(j == 2)
+ keys2 = k;
+- else
++ else{+ keys = k;
++ if(keychan != nil)
++ nbsendul(keychan, k);
++ }
+ }
+ }
+
+@@ -162,6 +180,8 @@
+ if((k & ax1) == ax1)
+ k &= ~ax1;
+ keys = k;
++ if(keychan != nil)
++ nbsendul(keychan, k);
+ }
+ }
+
--
⑨