From 4126f952f021b7e8fca7880e072092fcb3812f29 Mon Sep 17 00:00:00 2001 From: Apaczer <94932128+Apaczer@users.noreply.github.com> Date: Sat, 23 Mar 2024 16:30:20 +0100 Subject: [PATCH 2/7] add custom Input mapping with header --- inputmap.h | 40 ++++++++++++++++++++++++++++++ sdlbook.c | 73 +++++++++++++++++++++++++++--------------------------- 2 files changed, 77 insertions(+), 36 deletions(-) create mode 100644 inputmap.h diff --git a/inputmap.h b/inputmap.h new file mode 100644 index 0000000..0210a24 --- /dev/null +++ b/inputmap.h @@ -0,0 +1,40 @@ +#ifndef INPUTMAP_H +#define INPUTMAP_H + +#define INPUT_UP SDLK_UP +#define INPUT_DOWN SDLK_DOWN +#define INPUT_LEFT SDLK_LEFT +#define INPUT_RIGHT SDLK_RIGHT +#define INPUT_LMOD SDLK_LCTRL +#define INPUT_RMOD SDLK_RCTRL +#define INPUT_PGDOWN SDLK_PAGEDOWN +#define INPUT_PGUP SDLK_PAGEUP +#define INPUT_ZOOMIN SDLK_KP_PLUS +#define INPUT_ZOOMOUT SDLK_KP_MINUS +#define INPUT_PAGEN SDLK_g +#define INPUT_CLEAR SDLK_c +#define INPUT_CANCEL SDLK_BACKSPACE +#define INPUT_CONFIRM SDLK_RETURN +#define INPUT_EXIT SDLK_ESCAPE +#define INPUT_QUIT SDLK_q +#define INPUT_HELP SDLK_F1 + +#define STR_UP "UP" +#define STR_DOWN "DOWN" +#define STR_LEFT "LEFT" +#define STR_RIGHT "RIGHT" +#define STR_LMOD "LCTRL" +#define STR_RMOD "RCTRL" +#define STR_PGDOWN "PAGE_DOWN" +#define STR_PGUP "PAGE_UP" +#define STR_ZOOMIN "NUM+" +#define STR_ZOOMOUT "NUM-" +#define STR_PAGEN "G" +#define STR_CLEAR "C" +#define STR_CANCEL "BACKSPACE" +#define STR_CONFIRM "RETURN" +#define STR_EXIT "ESC" +#define STR_QUIT "Q" +#define STR_HELP "F1" + +#endif diff --git a/sdlbook.c b/sdlbook.c index d608aba..79b77f3 100644 --- a/sdlbook.c +++ b/sdlbook.c @@ -16,6 +16,7 @@ #include #include "ezsdl.h" #include "topaz.h" +#include "inputmap.h" #pragma RcB2 LINK "-ldjvulibre" "-lSSL" "-lmupdf" @@ -550,13 +551,13 @@ static int change_scroll_h(int incr) { #define HELP_TEXT \ "HELP SCREEN - HIT ANY KEY TO EXIT\n" \ - "UP, DOWN ARROW - SCROLL 32 PIX\n" \ - "CTRL + UP, DOWN ARROW - SCROLL 96 PIX\n" \ - "PAGE_UP/DOWN - SCROLL ONE PAGE\n" \ - "KEYPAD +/- OR CTRL-WHEEL - ZOOM\n" \ - "G - ENTER PAGE NUMBER\n" \ - "Q/ESC - QUIT\n" \ - "F1 - SHOW HELP SCREEN\n" + STR_UP ", " STR_DOWN " - SCROLL 32 PIX\n" \ + STR_LMOD "/" STR_RMOD " + " STR_UP "/" STR_DOWN " - SCROLL 96 PIX\n" \ + STR_PGUP "/" STR_PGDOWN " - SCROLL ONE PAGE\n" \ + STR_ZOOMIN "/" STR_ZOOMOUT " OR " STR_LMOD "/" STR_RMOD " + WHEEL - ZOOM\n" \ + STR_PAGEN " - ENTER PAGE NUMBER\n" \ + STR_QUIT "/" STR_EXIT " - QUIT\n" \ + STR_HELP " - SHOW HELP SCREEN\n" static int get_return_count(const char* text) { int count = 0; @@ -598,14 +599,14 @@ static void input_loop(const char* title, char *result, enum input_flags flags) case EV_QUIT: case EV_KEYUP: switch(event.which) { - case SDLK_BACKSPACE: case SDLK_LEFT: + case INPUT_CANCEL: case INPUT_LEFT: if(flags == INPUT_LOOP_RET) goto out; if(p > result) p--; p_n = *(p - 1); *p = 0; goto drawit; - case SDLK_RIGHT: + case INPUT_RIGHT: if(flags == INPUT_LOOP_RET) goto out; if(p - result < 20) { @@ -615,12 +616,12 @@ static void input_loop(const char* title, char *result, enum input_flags flags) goto drawit; } else break; - case SDLK_RETURN: case SDLK_ESCAPE: case SDLK_g: + case INPUT_CONFIRM: case INPUT_EXIT: case INPUT_PAGEN: out:; *p = 0; ezsdl_clear(); return; - case SDLK_UP: + case INPUT_UP: if(flags == INPUT_LOOP_RET) goto out; p_n = *(p - 1); @@ -633,7 +634,7 @@ static void input_loop(const char* title, char *result, enum input_flags flags) goto drawit; } else break; - case SDLK_DOWN: + case INPUT_DOWN: if(flags == INPUT_LOOP_RET) goto out; p_n = *(p - 1); @@ -821,51 +822,51 @@ int main(int argc, char **argv) { goto dun_goofed; case EV_KEYDOWN: switch(event.which) { - case SDLK_LCTRL: + case INPUT_LMOD: left_ctrl_pressed = 1; break; - case SDLK_RCTRL: + case INPUT_RMOD: right_ctrl_pressed = 1; break; - case SDLK_q: + case INPUT_QUIT: goto dun_goofed; - case SDLK_KP_PLUS: + case INPUT_ZOOMIN: need_redraw = change_scale(+10); break; - case SDLK_KP_MINUS: + case INPUT_ZOOMOUT: need_redraw = change_scale(-10); break; - case SDLK_PAGEDOWN: + case INPUT_PGDOWN: scroll_dist_v += page_dims.h; break; - case SDLK_PAGEUP: + case INPUT_PGUP: scroll_dist_v -= page_dims.h; break; - case SDLK_UP: + case INPUT_UP: if((event.mod & KMOD_LCTRL) || (event.mod & KMOD_RCTRL)) scroll_dist_v += -96; else scroll_dist_v += -32; break; - case SDLK_DOWN: + case INPUT_DOWN: if((event.mod & KMOD_LCTRL) || (event.mod & KMOD_RCTRL)) scroll_dist_v += +96; else scroll_dist_v += +32; break; - case SDLK_LEFT: + case INPUT_LEFT: if((event.mod & KMOD_LCTRL) || (event.mod & KMOD_RCTRL)) need_redraw = change_scroll_h(-96); else need_redraw = change_scroll_h(-32); break; - case SDLK_RIGHT: + case INPUT_RIGHT: if((event.mod & KMOD_LCTRL) || (event.mod & KMOD_RCTRL)) need_redraw = change_scroll_h(+96); else need_redraw = change_scroll_h(+32); break; - case SDLK_RETURN: + case INPUT_CONFIRM: if((event.mod & KMOD_LALT) || (event.mod & KMOD_RALT)) { ezsdl_toggle_fullscreen(); @@ -880,21 +881,21 @@ int main(int argc, char **argv) { break; case EV_KEYUP: switch(event.which) { - case SDLK_UP: - case SDLK_DOWN: - case SDLK_LEFT: - case SDLK_RIGHT: - case SDLK_PAGEUP: - case SDLK_PAGEDOWN: + case INPUT_UP: + case INPUT_DOWN: + case INPUT_LEFT: + case INPUT_RIGHT: + case INPUT_PGUP: + case INPUT_PGDOWN: need_redraw = 1; break; - case SDLK_LCTRL: + case INPUT_LMOD: left_ctrl_pressed = 0; break; - case SDLK_RCTRL: + case INPUT_RMOD: right_ctrl_pressed = 0; break; - case SDLK_F1: + case INPUT_HELP: { char buf[32]; buf[0] = 0; @@ -903,7 +904,7 @@ int main(int argc, char **argv) { } break; - case SDLK_g: + case INPUT_PAGEN: { char buf[32]; buf[0] = 0; @@ -912,12 +913,12 @@ int main(int argc, char **argv) { else need_redraw = 1; } break; - case SDLK_c: + case INPUT_CLEAR: ezsdl_clear(); ezsdl_refresh(); need_redraw = 1; break; - case SDLK_ESCAPE: + case INPUT_EXIT: goto dun_goofed; default: break; -- 2.34.1