Browse code

Mini fix to controller button order

neauoire authored on 27/12/2021 21:37:37
Showing 2 changed files
... ...
@@ -16,21 +16,25 @@ WITH REGARD TO THIS SOFTWARE.
16 16
 void
17 17
 controller_down(Device *d, Uint8 mask)
18 18
 {
19
-	d->dat[2] |= mask;
20
-	uxn_eval(d->u, d->vector);
19
+	if(mask) {
20
+		d->dat[2] |= mask;
21
+		uxn_eval(d->u, d->vector);
22
+	}
21 23
 }
22 24
 
23 25
 void
24 26
 controller_up(Device *d, Uint8 mask)
25 27
 {
26
-	d->dat[2] &= (~mask);
27
-	uxn_eval(d->u, d->vector);
28
+	if(mask) {
29
+		d->dat[2] &= (~mask);
30
+		uxn_eval(d->u, d->vector);
31
+	}
28 32
 }
29 33
 
30 34
 void
31 35
 controller_key(Device *d, Uint8 key)
32 36
 {
33
-	if(!key) {
37
+	if(key) {
34 38
 		d->dat[3] = key;
35 39
 		uxn_eval(d->u, d->vector);
36 40
 		d->dat[3] = 0x00;
... ...
@@ -505,14 +505,17 @@ run(Uxn *u)
505 505
 					clamp(event.motion.x - PAD, 0, ppu.width - 1),
506 506
 					clamp(event.motion.y - PAD, 0, ppu.height - 1));
507 507
 			/* Controller */
508
-			else if(event.type == SDL_KEYDOWN) {
509
-				controller_down(devctrl, get_button(&event));
510
-				controller_key(devctrl, get_key(&event));
511
-				do_shortcut(u, &event);
508
+			else if(event.type == SDL_KEYDOWN || event.type == SDL_TEXTINPUT) {
509
+				if(event.type == SDL_TEXTINPUT)
510
+					controller_key(devctrl, event.text.text[0]);
511
+				else if(get_key(&event))
512
+					controller_key(devctrl, get_key(&event));
513
+				else if(get_button(&event)) {
514
+					controller_down(devctrl, get_button(&event));
515
+					do_shortcut(u, &event);
516
+				}
512 517
 			} else if(event.type == SDL_KEYUP)
513 518
 				controller_up(devctrl, get_button(&event));
514
-			else if(event.type == SDL_TEXTINPUT)
515
-				controller_key(devctrl, event.text.text[0]);
516 519
 			else if(event.type == SDL_JOYBUTTONDOWN)
517 520
 				controller_down(devctrl, get_button_joystick(&event));
518 521
 			else if(event.type == SDL_JOYBUTTONUP)