From 7ed120ca975d7e3e117d9125ebe8dfaf6515bd0c Mon Sep 17 00:00:00 2001 From: Herb Jellinek Date: Fri, 19 Jul 2024 10:59:52 -0700 Subject: [PATCH 1/2] TAB-WINDOWS: Step through open windows Start it running with `(START-TAB-WINDOWS)`. Bonus: `(KEY-WINDOW)` starts a process that monitors keyboard and mouse button events and displays them in a little window. --- lispusers/TAB-WINDOWS | 72 ++++++++++++++++++++++++++++++++++++ lispusers/TAB-WINDOWS.DFASL | Bin 0 -> 2210 bytes lispusers/TAB-WINDOWS.TEdit | Bin 0 -> 2875 bytes 3 files changed, 72 insertions(+) create mode 100644 lispusers/TAB-WINDOWS create mode 100644 lispusers/TAB-WINDOWS.DFASL create mode 100644 lispusers/TAB-WINDOWS.TEdit diff --git a/lispusers/TAB-WINDOWS b/lispusers/TAB-WINDOWS new file mode 100644 index 00000000..61cdf972 --- /dev/null +++ b/lispusers/TAB-WINDOWS @@ -0,0 +1,72 @@ +(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) + +(FILECREATED "24-Jun-2024 16:07:07" {DSK}hjellinek>Projects>IL>TAB-WINDOWS.;12 2984 + + :CHANGES-TO (FNS TAB-WINDOWS IS-KEY-DOWN? START-TAB-WINDOWS KEY-WINDOW SHOW-KEYS) + (VARS TAB-WINDOWSCOMS) + (PROPS (TAB-WINDOWS :COMPILE-FILE)) + + :PREVIOUS-DATE " 4-Jun-2024 09:48:34" {DSK}hjellinek>Projects>IL>TAB-WINDOWS.;1) + + +(PRETTYCOMPRINT TAB-WINDOWSCOMS) + +(RPAQQ TAB-WINDOWSCOMS ((FNS IS-KEY-DOWN? START-TAB-WINDOWS TAB-WINDOWS SHOW-KEYS KEY-WINDOW) + (PROP :COMPILE-FILE TAB-WINDOWS))) +(DEFINEQ + +(IS-KEY-DOWN? + [LAMBDA (KEY-NAME KEYS-DOWN) + (for KEY-NAME-LIST in KEYS-DOWN thereis (FMEMB KEY-NAME KEY-NAME-LIST]) + +(START-TAB-WINDOWS + [LAMBDA NIL + (ADD.PROCESS '(TAB-WINDOWS) + 'NAME "Window Tabber" 'RESTARTABLE T]) + +(TAB-WINDOWS + [LAMBDA NIL + + (* ;; "When the meta and tab keys go down, TOTOPW the next window in OPENWINDOWS") + + (DECLARE (CL:SPECIAL \KEYNAMES)) + (LET ((CURRENT-WINDOW NIL) + (OPEN-WINDOWS (OPENWINDOWS))) + (CL:UNWIND-PROTECT + [PROGN (while T + do ([LET ((KEYS-DOWN (for K in \KEYNAMES when (KEYDOWNP K) collect K))) + [if (AND (IS-KEY-DOWN? 'TAB KEYS-DOWN) + (IS-KEY-DOWN? 'EXPAND KEYS-DOWN)) + then (if CURRENT-WINDOW + then (TOTOPW CURRENT-WINDOW) + (SETQ CURRENT-WINDOW (CADR (FMEMB CURRENT-WINDOW + OPEN-WINDOWS))) + else (SETQ CURRENT-WINDOW (CAR OPEN-WINDOWS] + (if (NOT KEYS-DOWN) + then (SETQ CURRENT-WINDOW NIL) + (SETQ OPEN-WINDOWS (OPENWINDOWS] + (BLOCK 20])]) + +(SHOW-KEYS + [LAMBDA NIL + (LET ((WINDOW (CREATEW NIL "Keys down"))) + (WINDOWPROP WINDOW 'PROCESS (THIS.PROCESS)) + [WINDOWPROP WINDOW 'CLOSEFN (FUNCTION (LAMBDA (W) + (DEL.PROCESS (WINDOWPROP W 'PROCESS] + (CL:UNWIND-PROTECT + [PROGN (while T do (LET ((DOWN-KEYS (for K in \KEYNAMES when (KEYDOWNP K) collect K))) + (BLOCK 100) + (CLEARW WINDOW) + (COND + (DOWN-KEYS (PRIN1 DOWN-KEYS WINDOW] + (CLOSEW WINDOW))]) + +(KEY-WINDOW + [LAMBDA NIL + (ADD.PROCESS '(SHOW-KEYS) + 'NAME "Showing Keys" 'RESTARTABLE T]) +) +(DECLARE%: DONTCOPY + (FILEMAP (NIL (645 2961 (IS-KEY-DOWN? 655 . 791) (START-TAB-WINDOWS 793 . 915) (TAB-WINDOWS 917 . 2166 +) (SHOW-KEYS 2168 . 2845) (KEY-WINDOW 2847 . 2959))))) +STOP diff --git a/lispusers/TAB-WINDOWS.DFASL b/lispusers/TAB-WINDOWS.DFASL new file mode 100644 index 0000000000000000000000000000000000000000..32a16eee45f7f3a752c265a07ea5637e1dbb4cf1 GIT binary patch literal 2210 zcmcIk-*3}a6u!1Y+B9u(yAVo&VYI26D%{bk8*HEsH*s1gj-ADh3|j}3){wLz>C$!x zA*OUO&g&}(;iku_4V;N=brPO z?|iGI{cJ*)64k2@3Y%S+PbYE4?KF4tyU=`z@*8%Zm3^K@a+tu2lf=iG9+ zRB`9Wa<%H5JF~Pnrs-q0GA=usku)7^=+y8?ht(22Q*)=6+*xU4R8B8fA@vUw`{dCJAM5axJ%&fO6Y%VH(=`re}jLcO5pFx&c7(0dU`l!j^K+( zc+OwK62Ci1Fct4ZBV@Wj9EiG!A{7)d3clril6yC??gEW~egeh47RqLdKApQw=@}0b#RXL&`85BS|fgJZp>f4hJ2>A9-!PWT<(mXrCr5X?X5F&Z z8|=70Xx#UDMqX)W5x-CYyWm9Vq77=y<;|RM5MK7S3@>43tuWXk*k2M*vk=8-iw7U~ z*Ldt_-4jxV1&>b6k~8W#8HR6s2=6@rZ{C($VrU%95o^+P&=F%gFd!g|zb1eogyjGj zolrpzvBd&tJPIZIcX{87{S$lEz2W~%O|nV*{0-qvG7>e{?YxvG@uX=wt^f)3kaK=^$C_Lt!EixUULi%*JAi_a#7 zPgk=m_dnvE&0T~~7}J_TuI0 zTz&rKkKgD|(|6OEfhV^z#r}^U3 zbFR_8dD{0n7{un4wrLcy<7!^`4BgbTIgl_Hjsol%Qle{0S1cQeX~WtQ(gnm4iX!p7 z?nK$0uE@&^OxXe{I1TmG;ZDLu@RIGNOUl~?Z_<8$gUb{d8yK8D9GPT@GLQn%2@Eal z3Ct~q7CIqy!T~F2KLj0D%LY4ubFA zGtBq*q3sYRPMqU=ua&2-UYebjN)>5Ggdv921WLuzx9Jo}3y)lgCRM!&Ig`IB%|H$Z z!+|Ie<4DH6z9@mLRQMA#JwVf&^x(hi*g**1ojSLl4)G#=Crpo{PIX$v>a|kkiiD|| MO!brRN?Tih19$;`0ssI2 literal 0 HcmV?d00001 diff --git a/lispusers/TAB-WINDOWS.TEdit b/lispusers/TAB-WINDOWS.TEdit new file mode 100644 index 0000000000000000000000000000000000000000..d03909be4a80a10b9c3b8096639764f506ec7ac4 GIT binary patch literal 2875 zcmeHH&2HO95T-0AahRe&i!{9s&;lg^+mKY&R&pvWtz^a$sZz@-ZqWlJu5HFNDe%Xx zdg?jo6ZHx51bu_NM`xB~Edy#|^imWk0g1aa-+c4U%yJD?ZL2CbkM?Gk-FIeF+8U~Q zw0Z$>EYdl=6j2n$;u5si)#}?=+++(8=OW!-Bv-o1FTxChWKmq95h6d!K?Gqg0!U(b zS;PW5#x8VP9b;d$Z0P{u-l?ihx#@DsSNB_g43Ep_$3YP<@-T^iQhQWlPF=+uS?;H~tZeQtF3;1XKpkrg zs5haUSfz)`s4bJy0@K{jiwtJ6L7+{hC{Z$^?2y``YA5WplA>2S@UtV$ z3IZWJE&`M&1zd&a7dgxYVBlF1!C8_bXkMJ3)0`GbKy@R{1D%0bg6=8%DHjX)bXBg?VufdiW9nnzYo2RT8@9unvaXzQT0 zpalo*4jex3;I51*!zUOta-5SXXy18eA9~E@%w>HYddH?)d8XckxznC&O*j%wtsfY) zTQD%k*60+*PM^6pINvjOWZ4Xy!2lJw)(LYwE_a@dh+E&tnJ{qK&>NX9%$PMi=6H_# zmN(X6;J9Ox-zf(Lw+{{Y`T#oJF1~aUj>cnV_OZyajB3MAiQ2PmbdU*QT>}mc0}TA# z#&Y(G%Rt#eggie0}2BT8P3s-3}Ny?9N)n|95NSf%|v5rR(x* zexU3qZMmxcnhoX4_5G%`3~0Pn9-*_*-2QNYK`iS5jmB?{P0VYyI?2Zr`VW)5y>F6F zFv)ha`Qb|1${XcPqbqf8-$zv)@bJDFh_f7JZ*>OW7!EqjeJ} z7I2&ABdSzUkh6TzY1&d6%9CT)8?pT%;{%&Ka)wP>q5EE-9fV4DT2K_d|CYK2y_dQM z(HQrLv=;OL*SqV6ZQRJ@^6OalP{ Date: Wed, 23 Oct 2024 14:07:56 -0700 Subject: [PATCH 2/2] Update docs, make configurable Make the meta-key name a parameter and update the docs to match. Document how different OSes, keyboards, and window systems can affect results. --- lispusers/TAB-WINDOWS | 17 +++++++++-------- lispusers/TAB-WINDOWS.DFASL | Bin 2210 -> 2272 bytes lispusers/TAB-WINDOWS.TEdit | Bin 2875 -> 3223 bytes 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/lispusers/TAB-WINDOWS b/lispusers/TAB-WINDOWS index 61cdf972..0427cdd9 100644 --- a/lispusers/TAB-WINDOWS +++ b/lispusers/TAB-WINDOWS @@ -1,8 +1,8 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "24-Jun-2024 16:07:07" {DSK}hjellinek>Projects>IL>TAB-WINDOWS.;12 2984 +(FILECREATED " 9-Aug-2024 11:31:37" {DSK}hjellinek>Projects>IL>TAB-WINDOWS.;13 3078 - :CHANGES-TO (FNS TAB-WINDOWS IS-KEY-DOWN? START-TAB-WINDOWS KEY-WINDOW SHOW-KEYS) + :CHANGES-TO (FNS START-TAB-WINDOWS TAB-WINDOWS SHOW-KEYS IS-KEY-DOWN? KEY-WINDOW) (VARS TAB-WINDOWSCOMS) (PROPS (TAB-WINDOWS :COMPILE-FILE)) @@ -20,12 +20,12 @@ (for KEY-NAME-LIST in KEYS-DOWN thereis (FMEMB KEY-NAME KEY-NAME-LIST]) (START-TAB-WINDOWS - [LAMBDA NIL - (ADD.PROCESS '(TAB-WINDOWS) + [LAMBDA (META-KEY-NAME) + (ADD.PROCESS (LIST 'TAB-WINDOWS (KWOTE META-KEY-NAME)) 'NAME "Window Tabber" 'RESTARTABLE T]) (TAB-WINDOWS - [LAMBDA NIL + [LAMBDA (META-KEY-NAME) (* ;; "When the meta and tab keys go down, TOTOPW the next window in OPENWINDOWS") @@ -36,7 +36,7 @@ [PROGN (while T do ([LET ((KEYS-DOWN (for K in \KEYNAMES when (KEYDOWNP K) collect K))) [if (AND (IS-KEY-DOWN? 'TAB KEYS-DOWN) - (IS-KEY-DOWN? 'EXPAND KEYS-DOWN)) + (IS-KEY-DOWN? META-KEY-NAME KEYS-DOWN)) then (if CURRENT-WINDOW then (TOTOPW CURRENT-WINDOW) (SETQ CURRENT-WINDOW (CADR (FMEMB CURRENT-WINDOW @@ -49,6 +49,7 @@ (SHOW-KEYS [LAMBDA NIL + (DECLARE (CL:SPECIAL \KEYNAMES)) (LET ((WINDOW (CREATEW NIL "Keys down"))) (WINDOWPROP WINDOW 'PROCESS (THIS.PROCESS)) [WINDOWPROP WINDOW 'CLOSEFN (FUNCTION (LAMBDA (W) @@ -67,6 +68,6 @@ 'NAME "Showing Keys" 'RESTARTABLE T]) ) (DECLARE%: DONTCOPY - (FILEMAP (NIL (645 2961 (IS-KEY-DOWN? 655 . 791) (START-TAB-WINDOWS 793 . 915) (TAB-WINDOWS 917 . 2166 -) (SHOW-KEYS 2168 . 2845) (KEY-WINDOW 2847 . 2959))))) + (FILEMAP (NIL (645 3055 (IS-KEY-DOWN? 655 . 791) (START-TAB-WINDOWS 793 . 950) (TAB-WINDOWS 952 . 2219 +) (SHOW-KEYS 2221 . 2939) (KEY-WINDOW 2941 . 3053))))) STOP diff --git a/lispusers/TAB-WINDOWS.DFASL b/lispusers/TAB-WINDOWS.DFASL index 32a16eee45f7f3a752c265a07ea5637e1dbb4cf1..e088a8e34b4bc9e095b3d9521107c6f10af946bd 100644 GIT binary patch delta 657 zcmZuuTWb?R6rS1Lq?>LFDVCT9TK7Tft&v=6Yf@~oN!J>3*>rcq;sqgTVzN{kNE1p0 zF^w-iEZ8_$_IQEfqfcHQe5-%KpHTmS;FG@8880B>aG2qo`M&dgbLQ2=(Zrs0EnnYPV6B9fksxU>#7%VxD!Yjn^H2)O(Fw8%UXURVwwL?r^; zKcb{4Oo_sPg5FyJa^$U%PlCj|R*-xaQqyaQ_rU@`3X8l%g?+cEdnRu1V-O|@k9<== z*xhqRvIWhk=&DOF3x{956!EgAuPMuuDQMX|%MKvPj)%19H8oQ!TU`ilKyZc@{C|3z zTB%aZs5(bJdXhLrzIzUEnLPIX#_{nFS!%(c delta 599 zcmZvZO=}ZD7{_OJlTFf9NKs>3A*>)`rK#z%Hf<8rO?D`G+g*0IY?U5Nnr)3rg3%Is zs8qpT%%OHL?4uq;&mM~4)i2_~4`C0U;!L5S;PAlky#1a({C`erYtPxv$=fs&EENRqt|UWcjj1IVeLTS{khYD+|k$H z_}qUs>32cHD*YuK(${fiZ5pu$Vo1e3xc&lP4BrlA-7w~D$0`%o6_UK*5ZBWkPcPMp z#PW!#H;5pI!?S*;+wKh%ui0t^eH>B@Df9tS;YgsjB1Q&M!asD(VU|ryzhWAe?;_zs zI1*p7nQwlIreiI7DJo0vx40%c8@)YkA~6A)H~}|Bne8UlYve9J?$TFLWm7~rJQ&8x zb<16K2)oW>D6VKr5@&v48_`nTD%W`S8FKvFXGO`gJj?b6F!czg(yWj?<$9L6+9(l6 ze8R`bnys70p_Io(T97_slm3wMGCslFXDq}d@7_BaKj$jzP)J~eq4<}M<;X7AU^^9a zq0fosI?)~fA>6qPC1C~#h9!gw;Rwg=1P3OOh!|-FVP;B^9>*#&<1u#xxCZOA5?_u~ ouR@jX#}}{63rV;kL6#eF#(mHmbh=wgE!cT_;=>Gj*BOuh09t;pxBvhE diff --git a/lispusers/TAB-WINDOWS.TEdit b/lispusers/TAB-WINDOWS.TEdit index d03909be4a80a10b9c3b8096639764f506ec7ac4..f3e633d9b2d130245a4341935d977e8118c6d18b 100644 GIT binary patch delta 527 zcmYk1&u-H|5XK$%kCUwg5FM!cK**D6P=gWaN3l1F-Pk*HXQM!a5%m1SBiGmlE%@@b zakZgtI!*Q3d88tzs}7vD`s#dd-?lc#p+B4i7P0DMTk2htscx&Sc3U0WexsoE=f+*r zTe}9*^_?jau*6y7TjY#1samu&F+g?#_mhmaW6GZW+0*@2(LI^@DVYNjv}2 S=2m~}*XM^C=~)k6eftZUi;RN+ delta 162 zcmbO(xm#>P61!JvUaEqT$;6!BldG9zSu{BnI5#h4+RZxoD2MRmB^-*A6F6KZ-{9CY z*^x__iK$`oa?ZTT;aozKHMzuqSafm-*K0l<1|VPt5e!TWER%h?B^j9~r*kJxX5o>N rW`v3}0cjx+n-z#fK@673mOP4FAg&mMo5G{P?fUc@&@6Ta!>U~XJg*_P