From: notaz <notasas@gmail.com>
Date: Sat, 1 Mar 2025 21:15:24 +0000 (+0200)
Subject: mkbd hack stuff
X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1dd770727c32898135d5dca81d54f0ca1dfd28ed;p=libpicofe.git

mkbd hack stuff
---

diff --git a/in_sdl.c b/in_sdl.c
index bfd0647..6e4501f 100644
--- a/in_sdl.c
+++ b/in_sdl.c
@@ -264,14 +264,43 @@ static int get_keystate(keybits_t *keystate, int sym)
 	return !!(*ks_word & mask);
 }
 
+#include "../../pico/sound/mkbd.h"
+
+#ifndef ARRAY_SIZE
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
+#endif
+
 static int handle_event(struct in_sdl_state *state, SDL_Event *event,
 	int *kc_out, int *down_out, int *emu_out)
 {
-	int emu;
+	const SDLKey chan_key[] = {
+		SDLK_q, SDLK_w, SDLK_e, SDLK_r, SDLK_t, SDLK_y,
+		SDLK_u, SDLK_i, SDLK_o, SDLK_p
+	};
+	int i, emu;
 
 	if (event->type != SDL_KEYDOWN && event->type != SDL_KEYUP)
 		return -1;
 
+	switch (event->key.keysym.sym) {
+	case SDLK_j: mkbd_tempo_kdown(0, event->type == SDL_KEYDOWN); return -1;
+	case SDLK_k: mkbd_tempo_kdown(1, event->type == SDL_KEYDOWN); return -1;
+	default: break;
+	}
+
+	if (event->type == SDL_KEYDOWN) {
+		for (i = 0; i < ARRAY_SIZE(chan_key); i++) {
+			if (event->key.keysym.sym != chan_key[i])
+				continue;
+			mkbd_steal_toggle(i, event->key.keysym.mod & KMOD_LSHIFT);
+			return -1;
+		}
+		switch (event->key.keysym.sym) {
+		case SDLK_l: mkbd_stop_z80 = !mkbd_stop_z80; return -1;
+		default: break;
+		}
+	}
+
 	emu = get_keystate(state->emu_keys, event->key.keysym.sym);
 	update_keystate(state->keystate, event->key.keysym.sym,
 		event->type == SDL_KEYDOWN);
diff --git a/sndout_sdl.c b/sndout_sdl.c
index c0c57ab..2b30d91 100644
--- a/sndout_sdl.c
+++ b/sndout_sdl.c
@@ -14,7 +14,7 @@
 
 // ~1/3s at 44kHz
 // set this to power of 2
-#define BUF_LEN 32768
+#define BUF_LEN (8*1024) //32768
 #define BUF_MASK (BUF_LEN - 1)
 
 static short buf[BUF_LEN];