mkbd hack stuff mkbd
authornotaz <notasas@gmail.com>
Sat, 1 Mar 2025 21:15:24 +0000 (23:15 +0200)
committernotaz <notasas@gmail.com>
Sat, 1 Mar 2025 21:15:24 +0000 (23:15 +0200)
in_sdl.c
sndout_sdl.c

index bfd0647..6e4501f 100644 (file)
--- 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);
index c0c57ab..2b30d91 100644 (file)
@@ -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];