Channel toggling in SDL

This commit is contained in:
Lior Halphon 2022-09-16 12:20:23 +03:00
parent 14c4548325
commit 0ebfdb840a
4 changed files with 32 additions and 2 deletions

View File

@ -1129,6 +1129,26 @@ uint8_t font[] = {
X, _, X, X, _, X,
X, _, _, _, _, X,
_, X, X, X, X, _,
/* Alt symbol */
_, _, X, X, _, _,
_, X, _, _, X, _,
_, X, _, _, X, _,
_, X, _, _, X, _,
_, X, X, X, X, _,
_, X, _, _, X, _,
_, X, _, _, X, _,
_, _, _, _, _, _,
X, _, _, X, X, X,
X, _, _, _, X, _,
X, _, _, _, X, _,
X, _, _, _, X, _,
X, _, _, _, X, _,
X, _, _, _, X, _,
X, X, X, _, X, _,
_, _, _, _, _, _,
};
const uint8_t font_max = sizeof(font) / GLYPH_HEIGHT / GLYPH_WIDTH + ' ';

View File

@ -11,6 +11,7 @@ extern const uint8_t font_max;
#define SELECTION_STRING RIGHT_ARROW_STRING
#define CTRL_STRING "\x80\x81\x82"
#define SHIFT_STRING "\x83"
#define ALT_STRING "\x91\x92"
#define CMD_STRING "\x84\x85"
#define ELLIPSIS_STRING "\x87"
#define MOJIBAKE_STRING "\x88"

View File

@ -76,8 +76,6 @@ void render_texture(void *pixels, void *previous)
}
static const char *help[] = {
"Drop a ROM to play.\n"
"\n"
"Keyboard Shortcuts:\n"
" Open Menu: Escape\n"
" Open ROM: " MODIFIER_NAME "+O\n"
@ -91,6 +89,7 @@ static const char *help[] = {
#else
" Mute/Unmute: " MODIFIER_NAME "+M\n"
#endif
" Toggle channel: " ALT_STRING "+(1-4)\n"
" Break Debugger: " CTRL_STRING "+C",
"\n"
"SameBoy\n"

View File

@ -441,6 +441,16 @@ static void handle_events(GB_gameboy_t *gb)
pending_command = GB_SDL_SAVE_STATE_COMMAND;
}
}
else if ((event.key.keysym.mod & KMOD_ALT) && event.key.keysym.scancode <= SDL_SCANCODE_4) {
GB_channel_t channel = event.key.keysym.scancode - SDL_SCANCODE_1;
bool state = !GB_is_channel_muted(gb, channel);
GB_set_channel_muted(gb, channel, state);
static char message[18];
sprintf(message, "Channel %d %smuted", channel + 1, state? "" : "un");
show_osd_text(message);
}
}
break;
}