/* 3dsspec - Nintendo 3DS Spectrum emulator. Copyright (C) 2021 Ian Cowburn This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . $Id: keyboard.h 61 2008-11-03 17:07:32Z ianc $ */ #ifndef DSSPEC_KEYBOARD_H #define DSSPEC_KEYBOARD_H #include /* Note that the first 40 values purposefully are the keyboard matrix keys. Note also that they are in display order, not matrix order. */ typedef enum { SK_1, SK_2, SK_3, SK_4, SK_5, SK_6, SK_7, SK_8, SK_9, SK_0, SK_Q, SK_W, SK_E, SK_R, SK_T, SK_Y, SK_U, SK_I, SK_O, SK_P, SK_A, SK_S, SK_D, SK_F, SK_G, SK_H, SK_J, SK_K, SK_L, SK_NEWLINE, SK_SHIFT, SK_Z, SK_X, SK_C, SK_V, SK_B, SK_N, SK_M, SK_PERIOD, SK_SPACE, SK_ABOUT, SK_CONFIG, SK_PAD_UP, SK_PAD_DOWN, SK_PAD_LEFT, SK_PAD_RIGHT, SK_PAD_A, SK_PAD_B, SK_PAD_X, SK_PAD_Y, SK_PAD_R, SK_PAD_L, SK_PAD_START, SK_PAD_SELECT, NUM_SOFT_KEYS } SoftKey; typedef struct { SoftKey key; int pressed; } SoftKeyEvent; /* Display the soft keyboard. */ void SK_DisplayKeyboard(void); /* Returns TRUE while there are still key events for this cycle */ int SK_GetEvent(SoftKeyEvent *ev); /* Returns TRUE while there are still key events for this cycle. Unlike SK_GetEvent this does not do joypad mappings. */ int SK_GetBareEvent(SoftKeyEvent *ev); /* Sets a key to be 'sticky'. */ void SK_SetSticky(SoftKey key, int is_sticky); /* Map the joypad to keys. Note that when mapped that both the key and the joypad code will be generated. */ void SK_DefinePad(SoftKey pad, SoftKey key); /* Returns a name for key symbols. */ const char *SK_KeyName(SoftKey pad); /* Allows the keyboard to save/restore its state from a stream */ void SK_SaveSnapshot(FILE *fp); void SK_LoadSnapshot(FILE *fp); #endif /* DSSPEC_KEYBOARD_H */