From 1dd770727c32898135d5dca81d54f0ca1dfd28ed Mon Sep 17 00:00:00 2001 From: notaz Date: Sat, 1 Mar 2025 23:15:24 +0200 Subject: [PATCH] mkbd hack stuff --- in_sdl.c | 31 ++++++++++++++++++++++++++++++- sndout_sdl.c | 2 +- 2 files changed, 31 insertions(+), 2 deletions(-) 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]; -- 2.39.5