Handle all shortcuts in the same function
Shortcuts are sometimes initiated from a keycode event, and sometimes
from a text input event.
Move the handling to a unique function.
@@ -320,18 +320,41 @@ static SDL_bool is_ctrl_down(void) {
return state[SDL_SCANCODE_LCTRL] || state[SDL_SCANCODE_RCTRL];
}
-static void handle_text_input(const SDL_TextInputEvent *event) {
- if (is_ctrl_down()) {
- char c = event->text[0];
+static void handle_shortcut(char c) {
switch (c) {
+ case 'h':
+ send_keycode(AKEYCODE_HOME, "HOME");
+ break;
+ case 'b':
+ send_keycode(AKEYCODE_BACK, "BACK");
+ break;
+ case 'm':
+ send_keycode(AKEYCODE_APP_SWITCH, "APP_SWITCH");
+ break;
+ case 'p':
+ send_keycode(AKEYCODE_POWER, "POWER");
+ break;
case '+':
send_keycode(AKEYCODE_VOLUME_UP, "VOLUME_UP");
break;
case '-':
send_keycode(AKEYCODE_VOLUME_DOWN, "VOLUME_DOWN");
break;
+ case 'f':
+ switch_fullscreen();
+ break;
+ case 'x':
+ resize_to_fit();
+ break;
+ case 'g':
+ resize_to_pixel_perfect();
+ break;
+ }
}
- // ignore
+
+static void handle_text_input(const SDL_TextInputEvent *event) {
+ if (is_ctrl_down()) {
+ handle_shortcut(event->text[0]);
return;
}
@@ -357,50 +380,33 @@ static void handle_key(const SDL_KeyboardEvent *event) {
return;
}
- // Ctrl+x: optimal size (remove black borders)
- if (keycode == SDLK_x && !shift) {
- resize_to_fit();
+ if (shift) {
+ // currently, there is no shortcut implying SHIFT
return;
}
- // Ctrl+g: pixel-perfect (ratio 1:1)
- if (keycode == SDLK_g && !shift) {
- resize_to_pixel_perfect();
+ switch (keycode) {
+ case SDLK_f:
+ handle_shortcut('f');
return;
- }
-
- // Ctrl+f: switch fullscreen
- if (keycode == SDLK_f && !shift) {
- switch_fullscreen();
+ case SDLK_x:
+ handle_shortcut('x');
return;
- }
-
- // Ctrl+h: HOME (the HOME key also works natively)
- if (keycode == SDLK_h && !shift) {
- send_keycode(AKEYCODE_HOME, "HOME");
+ case SDLK_g:
+ handle_shortcut('g');
return;
- }
-
- // Ctrl+b or Ctrl+BACKSPACE: BACK (the ESCAPE key also works natively)
- if ((keycode == SDLK_b && !shift) || keycode == SDLK_BACKSPACE) {
- send_keycode(AKEYCODE_BACK, "BACK");
+ case SDLK_b: // fall-through
+ case SDLK_BACKSPACE:
+ handle_shortcut('b');
return;
- }
-
- // Ctrl+m: APP_SWITCH
- if (keycode == SDLK_m && !shift) {
- send_keycode(AKEYCODE_APP_SWITCH, "APP_SWITCH");
+ case SDLK_m:
+ handle_shortcut('m');
return;
- }
-
- // Ctrl+p: POWER
- if (keycode == SDLK_p && !shift) {
- send_keycode(AKEYCODE_POWER, "POWER");
+ case SDLK_p:
+ handle_shortcut('p');
return;
}
- // volume shortcuts are handled in handle_text_input()
-
return;
}
