diff --git a/gui/shaviankb/shaviankb.tal b/gui/shaviankb/shaviankb.tal index e9e838a..052ed97 100644 --- a/gui/shaviankb/shaviankb.tal +++ b/gui/shaviankb/shaviankb.tal @@ -5,6 +5,10 @@ |20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 |90 @Mouse &vector $2 &x $2 &y $2 &state $1 &chord $1 &pad $4 &scrolly &scrolly-hb $1 &scrolly-lb $1 +|0000 + + @hover $2 + |0100 @on-reset ( -> ) @@ -19,8 +23,29 @@ @on-mouse ( -> ) [ LIT2 00 -Mouse/state ] DEI NEQ #42 ADD ;pointer-icn + .Mouse/state DEI ?on-mouse-down + ( | hover ) + get-mouse-key BRK +@on-mouse-down ( -> ) + BRK + +( +@|core ) + +@ ( id* -- ) + DUP2 .hover LDZ2 EQU2 ?{ .hover STZ2 + JMP2r } + POP2 JMP2r + +@get-mouse-key ( -- id* ) + ( x ) .Mouse/x DEI2 #0008 SUB2 #05 SFT2 + ( y ) .Mouse/y DEI2 #0008 SUB2 #0030 DIV2 #0009 MUL2 ADD2 + ( last2 ) DUP #22 LTH ?{ #0004 SUB2 JMP2r } + ( space ) DUP #1d SUB #04 GTH ?{ POP2 #001d } + JMP2r + @ ( id* -- ) DUP2 #0009 DIV2 #0030 MUL2 #0008 ADD2 .Screen/y DEO2 DUP #1e NEQ ?{ POP2 #0007 } @@ -31,15 +56,18 @@ @ ( -- ) #0020 #0000 &l ( -- ) - DUP2 - DUP #1d NEQ ?{ - INC2 !&l } - DUP2 #0006 MUL2 ;layout ADD2 + DUP2 #00 + ( ) INC2 GTH2k ?&l + POP2 POP2 JMP2r + +@ ( id* state -- ) + POP DUP2 + DUP #1d EQU ? + #0006 MUL2 ;layout ADD2 ( ) STH2k #0004 ADD2 LDA2 ( ) STH2kr #0002 ADD2 LDA2 ( ) STH2r LDA2 - ( ) INC2 GTH2k ?&l - POP2 POP2 JMP2r + JMP2r @ ( addr* -- ) .Screen/addr DEO2 @@ -65,8 +93,8 @@ .Screen/y DEI2k #001c SUB2 ROT DEO2 JMP2r -@ ( -- ) - [ LIT2 35 -Screen/auto ] DEO +@ ( id* -- ) + POP2 [ LIT2 35 -Screen/auto ] DEO ;button-wide-icn/left .Screen/addr DEO2 [ LIT2 81 -Screen/sprite ] DEOk DEOk #ef &l ( -- )