| ... | ... |
@@ -45,8 +45,7 @@ |
| 45 | 45 |
|0100 ;System { vector 2 pad 6 r 2 g 2 b 2 }
|
| 46 | 46 |
|0110 ;Console { pad 8 char 1 byte 1 short 2 }
|
| 47 | 47 |
|0120 ;Screen { vector 2 width 2 height 2 pad 2 x 2 y 2 addr 2 color 1 }
|
| 48 |
-|0140 ;Controller { vector 2 button 1 }
|
|
| 49 |
-|0150 ;Keys { vector 2 key 1 }
|
|
| 48 |
+|0140 ;Controller { vector 2 button 1 key 1 }
|
|
| 50 | 49 |
|0160 ;Mouse { vector 2 x 2 y 2 state 1 chord 1 }
|
| 51 | 50 |
|0170 ;File { pad 8 name 2 length 2 load 2 save 2 }
|
| 52 | 51 |
|
| ... | ... |
@@ -56,7 +55,6 @@ |
| 56 | 55 |
|
| 57 | 56 |
( theme ) #e0fa =System.r #30fa =System.g #30fa =System.b |
| 58 | 57 |
( vectors ) ,on-mouse =Mouse.vector |
| 59 |
- ( vectors ) ,on-key =Keys.vector |
|
| 60 | 58 |
( vectors ) ,on-button =Controller.vector |
| 61 | 59 |
|
| 62 | 60 |
( load file ) |
| ... | ... |
@@ -70,38 +68,11 @@ |
| 70 | 68 |
|
| 71 | 69 |
BRK |
| 72 | 70 |
|
| 73 |
-@on-key |
|
| 74 |
- |
|
| 75 |
- ~Keys #08 NEQ ^$no-backspace JNZ |
|
| 76 |
- ( erase ) |
|
| 77 |
- ~selection.to ~selection.from SUB2 #0001 NEQ2 ^$erase-multiple JNZ |
|
| 78 |
- ~selection.to ~selection.from SUB2 ,shift-left JSR2 |
|
| 79 |
- ,$erase-end JMP2 |
|
| 80 |
- $erase-multiple |
|
| 81 |
- ~selection.from ++ =selection.from |
|
| 82 |
- ~selection.to ~selection.from SUB2 ++ ,shift-left JSR2 |
|
| 83 |
- $erase-end |
|
| 84 |
- ~selection.from -- =selection.from |
|
| 85 |
- ^$keys-end JMP |
|
| 86 |
- $no-backspace |
|
| 87 |
- |
|
| 88 |
- ( insert ) |
|
| 89 |
- ~selection.to ~selection.from SUB2 ,shift-right JSR2 |
|
| 90 |
- ~Keys ~selection.from POK2 |
|
| 91 |
- ~selection.from ++ =selection.from |
|
| 92 |
- |
|
| 93 |
- $keys-end |
|
| 94 |
- ~selection.from ++ =selection.to |
|
| 95 |
- ( release ) #00 =Keys |
|
| 96 |
- ,redraw JSR2 |
|
| 97 |
- |
|
| 98 |
-BRK |
|
| 99 |
- |
|
| 100 | 71 |
@on-button ( -> ) |
| 101 | 72 |
|
| 102 | 73 |
( alt + arrow ) |
| 103 |
- ~Controller #0f AND #02 NEQ ^$no-alt JNZ |
|
| 104 |
- ~Controller #04 SFT |
|
| 74 |
+ ~Controller.button #0f AND #02 NEQ ^$no-alt JNZ |
|
| 75 |
+ ~Controller.button #04 SFT |
|
| 105 | 76 |
DUP #01 NEQ ^$no-aup JNZ |
| 106 | 77 |
( sel word ) ,find-wordstart JSR2 =selection.to $no-aup |
| 107 | 78 |
DUP #02 NEQ ^$no-adown JNZ |
| ... | ... |
@@ -117,8 +88,8 @@ BRK |
| 117 | 88 |
$no-alt |
| 118 | 89 |
|
| 119 | 90 |
( ctrl + arrow ) |
| 120 |
- ~Controller #0f AND #01 NEQ ^$no-ctrl JNZ |
|
| 121 |
- ~Controller #04 SFT |
|
| 91 |
+ ~Controller.button #0f AND #01 NEQ ^$no-ctrl JNZ |
|
| 92 |
+ ~Controller.button #04 SFT |
|
| 122 | 93 |
DUP #01 NEQ ^$no-cup JNZ |
| 123 | 94 |
( jump scroll ) #0004 ,scroll-up JSR2 $no-cup |
| 124 | 95 |
DUP #02 NEQ ^$no-cdown JNZ |
| ... | ... |
@@ -133,8 +104,8 @@ BRK |
| 133 | 104 |
$no-ctrl |
| 134 | 105 |
|
| 135 | 106 |
( arrow ) |
| 136 |
- ~Controller #f0 AND #00 EQU ,$no-arrow JNZ2 |
|
| 137 |
- ~Controller #f0 AND |
|
| 107 |
+ ~Controller.button #f0 AND #00 EQU ,$no-arrow JNZ2 |
|
| 108 |
+ ~Controller.button #f0 AND |
|
| 138 | 109 |
DUP #10 NEQ ^$no-arrowup JNZ |
| 139 | 110 |
( clamp ) ~position.y #0000 EQU2 ^$no-arrowup JNZ |
| 140 | 111 |
,find-lineoffset JSR2 =position.x ~position.y -- =position.y |
| ... | ... |
@@ -156,6 +127,28 @@ BRK |
| 156 | 127 |
,redraw JSR2 |
| 157 | 128 |
$no-arrow |
| 158 | 129 |
|
| 130 |
+ ~Controller.key #08 NEQ ^$no-backspace JNZ |
|
| 131 |
+ ( erase ) |
|
| 132 |
+ ~selection.to ~selection.from SUB2 #0001 NEQ2 ^$erase-multiple JNZ |
|
| 133 |
+ ~selection.to ~selection.from SUB2 ,shift-left JSR2 |
|
| 134 |
+ ,$erase-end JMP2 |
|
| 135 |
+ $erase-multiple |
|
| 136 |
+ ~selection.from ++ =selection.from |
|
| 137 |
+ ~selection.to ~selection.from SUB2 ++ ,shift-left JSR2 |
|
| 138 |
+ $erase-end |
|
| 139 |
+ ~selection.from -- =selection.from |
|
| 140 |
+ ~selection.from ++ =selection.to |
|
| 141 |
+ ,redraw JSR2 |
|
| 142 |
+ BRK |
|
| 143 |
+ $no-backspace |
|
| 144 |
+ |
|
| 145 |
+ ( insert ) |
|
| 146 |
+ ~selection.to ~selection.from SUB2 ,shift-right JSR2 |
|
| 147 |
+ ~Controller.key ~selection.from POK2 |
|
| 148 |
+ ~selection.from ++ =selection.from |
|
| 149 |
+ ~selection.from ++ =selection.to |
|
| 150 |
+ ,redraw JSR2 |
|
| 151 |
+ |
|
| 159 | 152 |
BRK |
| 160 | 153 |
|
| 161 | 154 |
@on-mouse ( -> ) |
| ... | ... |
@@ -199,7 +192,7 @@ BRK |
| 199 | 192 |
BRK |
| 200 | 193 |
$no-chords |
| 201 | 194 |
( drag ) |
| 202 |
- ~Mouse.state ~touch.state NEQ ~Controller #0f AND #02 NEQ #0101 EQU2 ^$no-drag JNZ |
|
| 195 |
+ ~Mouse.state ~touch.state NEQ ~Controller.button #0f AND #02 NEQ #0101 EQU2 ^$no-drag JNZ |
|
| 203 | 196 |
( on drag ) |
| 204 | 197 |
,find-selection JSR2 ++ =selection.to |
| 205 | 198 |
,clamp-selection JSR2 |
| ... | ... |
@@ -84,7 +84,6 @@ BRK |
| 84 | 84 |
|
| 85 | 85 |
~Controller.key #00 EQU ^$no-key JNZ |
| 86 | 86 |
~selection.x1 ~selection.y1 ~Controller.key SET-CELL |
| 87 |
- ~Controller.key =Console.byte |
|
| 88 | 87 |
,redraw JSR2 |
| 89 | 88 |
$no-key |
| 90 | 89 |
|
| ... | ... |
@@ -108,8 +107,7 @@ BRK |
| 108 | 107 |
~selection.x2 #01 ADD =selection.x2 $no-right |
| 109 | 108 |
POP |
| 110 | 109 |
|
| 111 |
- ~Controller.button #04 NEQ ^$no-backspace JNZ |
|
| 112 |
- ~Controller.button =Console.byte |
|
| 110 |
+ ~Controller.key #08 NEQ ^$no-backspace JNZ |
|
| 113 | 111 |
~selection.x1 ~selection.y1 #2e SET-CELL ( put . char ) |
| 114 | 112 |
$no-backspace |
| 115 | 113 |
|
| ... | ... |
@@ -164,8 +164,8 @@ doctrl(Uxn *u, SDL_Event *event, int z) |
| 164 | 164 |
switch(event->key.keysym.sym) {
|
| 165 | 165 |
case SDLK_LCTRL: flag = 0x01; break; |
| 166 | 166 |
case SDLK_LALT: flag = 0x02; break; |
| 167 |
- case SDLK_ESCAPE: flag = 0x04; break; |
|
| 168 |
- case SDLK_LSHIFT: flag = 0x08; break; |
|
| 167 |
+ case SDLK_LSHIFT: flag = 0x04; break; |
|
| 168 |
+ case SDLK_ESCAPE: flag = 0x08; break; |
|
| 169 | 169 |
case SDLK_UP: flag = 0x10; break; |
| 170 | 170 |
case SDLK_DOWN: flag = 0x20; break; |
| 171 | 171 |
case SDLK_LEFT: flag = 0x40; break; |
| ... | ... |
@@ -332,6 +332,7 @@ start(Uxn *u) |
| 332 | 332 |
doctrl(u, &event, event.type == SDL_KEYDOWN); |
| 333 | 333 |
evaluxn(u, devctrl->vector); |
| 334 | 334 |
u->ram.dat[devctrl->addr + 3] = 0; |
| 335 |
+ break; |
|
| 335 | 336 |
case SDL_MOUSEBUTTONUP: |
| 336 | 337 |
case SDL_MOUSEBUTTONDOWN: |
| 337 | 338 |
case SDL_MOUSEMOTION: |