29a30,31
> #include "stdio.h"
> #define INT_SIZE sizeof(int)
508a511,798
> /* TKQ: Scancode translator; used to remap the keys */
> unsigned int TKQ_Scancode_Array[SDL_NUM_SCANCODES] = {
> 0, // '0'
> 1, // '0'
> 2, // '0'
> 3, // '0'
> 4, // ''a''
> 5, // ''b''
> 6, // ''c''
> 7, // ''d''
> 8, // ''e''
> 9, // ''f''
> 10, // ''g''
> 11, // ''h''
> 12, // ''i''
> 13, // ''j''
> 14, // ''k''
> 15, // ''l''
> 16, // ''m''
> 17, // ''n''
> 18, // ''o''
> 19, // ''p''
> 20, // ''q''
> 21, // ''r''
> 22, // ''s''
> 23, // ''t''
> 24, // ''u''
> 25, // ''v''
> 26, // ''w''
> 27, // ''x''
> 28, // ''y''
> 29, // ''z''
> 30, // ''1''
> 31, // ''2''
> 32, // ''3''
> 33, // ''4''
> 34, // ''5''
> 35, // ''6''
> 36, // ''7''
> 37, // ''8''
> 38, // ''9''
> 39, // ''0''
> 40, // 'SDLK_RETURN'
> 41, // 'SDLK_ESCAPE'
> 42, // 'SDLK_BACKSPACE'
> 43, // 'SDLK_TAB'
> 44, // 'SDLK_SPACE'
> 45, // ''-''
> 46, // ''=''
> 47, // ''[''
> 48, // '']''
> 49, // ''''
> 50, // ''#''
> 51, // '';''
> 52, // '''''
> 53, // ''`''
> 54, // '''
> 55, // '''
> 56, // ''.''
> 57, // ''/''
> 58, // 'SDLK_CAPSLOCK'
> 59, // 'SDLK_F1'
> 60, // 'SDLK_F2'
> 61, // 'SDLK_F3'
> 62, // 'SDLK_F4'
> 63, // 'SDLK_F5'
> 64, // 'SDLK_F6'
> 65, // 'SDLK_F7'
> 66, // 'SDLK_F8'
> 67, // 'SDLK_F9'
> 68, // 'SDLK_F10'
> 69, // 'SDLK_F11'
> 70, // 'SDLK_F12'
> 71, // 'SDLK_PRINTSCREEN'
> 72, // 'SDLK_SCROLLLOCK'
> 73, // 'SDLK_PAUSE'
> 74, // 'SDLK_INSERT'
> 75, // 'SDLK_HOME'
> 76, // 'SDLK_PAGEUP'
> 77, // 'SDLK_DELETE'
> 78, // 'SDLK_END'
> 79, // 'SDLK_PAGEDOWN'
> 80, // 'SDLK_RIGHT'
> 81, // 'SDLK_LEFT'
> 82, // 'SDLK_DOWN'
> 83, // 'SDLK_UP'
> 84, // 'SDLK_NUMLOCKCLEAR'
> 85, // 'SDLK_KP_DIVIDE'
> 86, // 'SDLK_KP_MULTIPLY'
> 87, // 'SDLK_KP_MINUS'
> 88, // 'SDLK_KP_PLUS'
> 89, // 'SDLK_KP_ENTER'
> 90, // 'SDLK_KP_1'
> 91, // 'SDLK_KP_2'
> 92, // 'SDLK_KP_3'
> 93, // 'SDLK_KP_4'
> 94, // 'SDLK_KP_5'
> 95, // 'SDLK_KP_6'
> 96, // 'SDLK_KP_7'
> 97, // 'SDLK_KP_8'
> 98, // 'SDLK_KP_9'
> 99, // 'SDLK_KP_0'
> 100, // 'SDLK_KP_PERIOD'
> 101, // '0'
> 102, // 'SDLK_APPLICATION'
> 103, // 'SDLK_POWER'
> 104, // 'SDLK_KP_EQUALS'
> 105, // 'SDLK_F13'
> 106, // 'SDLK_F14'
> 107, // 'SDLK_F15'
> 108, // 'SDLK_F16'
> 109, // 'SDLK_F17'
> 110, // 'SDLK_F18'
> 111, // 'SDLK_F19'
> 112, // 'SDLK_F20'
> 113, // 'SDLK_F21'
> 114, // 'SDLK_F22'
> 115, // 'SDLK_F23'
> 116, // 'SDLK_F24'
> 117, // 'SDLK_EXECUTE'
> 118, // 'SDLK_HELP'
> 119, // 'SDLK_MENU'
> 120, // 'SDLK_SELECT'
> 121, // 'SDLK_STOP'
> 122, // 'SDLK_AGAIN'
> 123, // 'SDLK_UNDO'
> 124, // 'SDLK_CUT'
> 125, // 'SDLK_COPY'
> 126, // 'SDLK_PASTE'
> 127, // 'SDLK_FIND'
> 128, // 'SDLK_MUTE'
> 129, // 'SDLK_VOLUMEUP'
> 130, // 'SDLK_VOLUMEDOWN'
> 131, // '0'
> 132, // '0'
> 133, // '0'
> 134, // 'SDLK_KP_COMMA'
> 135, // 'SDLK_KP_EQUALSAS400'
> 136, // '0'
> 137, // '0'
> 138, // '0'
> 139, // '0'
> 140, // '0'
> 141, // '0'
> 142, // '0'
> 143, // '0'
> 144, // '0'
> 145, // '0'
> 146, // '0'
> 147, // '0'
> 148, // '0'
> 149, // '0'
> 150, // '0'
> 151, // '0'
> 152, // '0'
> 153, // '0'
> 154, // 'SDLK_ALTERASE'
> 155, // 'SDLK_SYSREQ'
> 156, // 'SDLK_CANCEL'
> 157, // 'SDLK_CLEAR'
> 158, // 'SDLK_PRIOR'
> 159, // 'SDLK_RETURN2'
> 160, // 'SDLK_SEPARATOR'
> 161, // 'SDLK_OUT'
> 162, // 'SDLK_OPER'
> 163, // 'SDLK_CLEARAGAIN'
> 164, // 'SDLK_CRSEL'
> 165, // 'SDLK_EXSEL'
> 166, // '0'
> 167, // '0'
> 168, // '0'
> 169, // '0'
> 170, // '0'
> 171, // '0'
> 172, // '0'
> 173, // '0'
> 174, // '0'
> 175, // '0'
> 176, // '0'
> 177, // 'SDLK_KP_00'
> 178, // 'SDLK_KP_000'
> 179, // 'SDLK_THOUSANDSSEPARATOR'
> 180, // 'SDLK_DECIMALSEPARATOR'
> 181, // 'SDLK_CURRENCYUNIT'
> 182, // 'SDLK_CURRENCYSUBUNIT'
> 183, // 'SDLK_KP_LEFTPAREN'
> 184, // 'SDLK_KP_RIGHTPAREN'
> 185, // 'SDLK_KP_LEFTBRACE'
> 186, // 'SDLK_KP_RIGHTBRACE'
> 187, // 'SDLK_KP_TAB'
> 188, // 'SDLK_KP_BACKSPACE'
> 189, // 'SDLK_KP_A'
> 190, // 'SDLK_KP_B'
> 191, // 'SDLK_KP_C'
> 192, // 'SDLK_KP_D'
> 193, // 'SDLK_KP_E'
> 194, // 'SDLK_KP_F'
> 195, // 'SDLK_KP_XOR'
> 196, // 'SDLK_KP_POWER'
> 197, // 'SDLK_KP_PERCENT'
> 198, // 'SDLK_KP_LESS'
> 199, // 'SDLK_KP_GREATER'
> 200, // 'SDLK_KP_AMPERSAND'
> 201, // 'SDLK_KP_DBLAMPERSAND'
> 202, // 'SDLK_KP_VERTICALBAR'
> 203, // 'SDLK_KP_DBLVERTICALBAR'
> 204, // 'SDLK_KP_COLON'
> 205, // 'SDLK_KP_HASH'
> 206, // 'SDLK_KP_SPACE'
> 207, // 'SDLK_KP_AT'
> 208, // 'SDLK_KP_EXCLAM'
> 209, // 'SDLK_KP_MEMSTORE'
> 210, // 'SDLK_KP_MEMRECALL'
> 211, // 'SDLK_KP_MEMCLEAR'
> 212, // 'SDLK_KP_MEMADD'
> 213, // 'SDLK_KP_MEMSUBTRACT'
> 214, // 'SDLK_KP_MEMMULTIPLY'
> 215, // 'SDLK_KP_MEMDIVIDE'
> 216, // 'SDLK_KP_PLUSMINUS'
> 217, // 'SDLK_KP_CLEAR'
> 218, // 'SDLK_KP_CLEARENTRY'
> 219, // 'SDLK_KP_BINARY'
> 220, // 'SDLK_KP_OCTAL'
> 221, // 'SDLK_KP_DECIMAL'
> 222, // 'SDLK_KP_HEXADECIMAL'
> 223, // '0'
> 224, // '0'
> 225, // 'SDLK_LCTRL'
> 226, // 'SDLK_LSHIFT'
> 227, // 'SDLK_LALT'
> 228, // 'SDLK_LGUI'
> 229, // 'SDLK_RCTRL'
> 230, // 'SDLK_RSHIFT'
> 231, // 'SDLK_RALT'
> 232, // 'SDLK_RGUI'
> 233, // '0'
> 234, // '0'
> 235, // '0'
> 236, // '0'
> 237, // '0'
> 238, // '0'
> 239, // '0'
> 240, // '0'
> 241, // '0'
> 242, // '0'
> 243, // '0'
> 244, // '0'
> 245, // '0'
> 246, // '0'
> 247, // '0'
> 248, // '0'
> 249, // '0'
> 250, // '0'
> 251, // '0'
> 252, // '0'
> 253, // '0'
> 254, // '0'
> 255, // '0'
> 256, // '0'
> 257, // '0'
> 258, // 'SDLK_MODE'
> 259, // 'SDLK_AUDIONEXT'
> 260, // 'SDLK_AUDIOPREV'
> 261, // 'SDLK_AUDIOSTOP'
> 262, // 'SDLK_AUDIOPLAY'
> 263, // 'SDLK_AUDIOMUTE'
> 264, // 'SDLK_MEDIASELECT'
> 265, // 'SDLK_WWW'
> 266, // 'SDLK_MAIL'
> 267, // 'SDLK_CALCULATOR'
> 268, // 'SDLK_COMPUTER'
> 269, // 'SDLK_AC_SEARCH'
> 270, // 'SDLK_AC_HOME'
> 271, // 'SDLK_AC_BACK'
> 272, // 'SDLK_AC_FORWARD'
> 273, // 'SDLK_AC_STOP'
> 274, // 'SDLK_AC_REFRESH'
> 275, // 'SDLK_AC_BOOKMARKS'
> 276, // 'SDLK_BRIGHTNESSDOWN'
> 277, // 'SDLK_BRIGHTNESSUP'
> 278, // 'SDLK_DISPLAYSWITCH'
> 279, // 'SDLK_KBDILLUMTOGGLE'
> 280, // 'SDLK_KBDILLUMDOWN'
> 281, // 'SDLK_KBDILLUMUP'
> 282, // 'SDLK_EJECT'
> 283, // 'SDLK_SLEEP'
> };
>
550a841,896
> /* TKQ: Loads the keymap from the cfgFilename file */
> void TKQ_LoadKeymap(const char* cfgFilename, const char* errorFilename)
> {
> FILE * inCFGFile;
> FILE * errorFile;
>
> errorFile = fopen(errorFilename, "w+");
> if (errorFile == 0)
> {
> SDL_Log("%s", "Critical Failure: Cannot open error file for writing");
> return;
> }
>
> inCFGFile = fopen(cfgFilename, "r");
> if (inCFGFile == 0)
> {
> fprintf(errorFile, "%s\n", "Warning: could not open config file/config file does not exist");
> fclose(errorFile);
> return;
> }
>
> unsigned int currentScancode;
>
> for (int i = 0; i < SDL_NUM_SCANCODES; ++i)
> {
> fscanf(inCFGFile, "%u\n", ¤tScancode);
> if ((feof(inCFGFile) && i != SDL_NUM_SCANCODES - 1) || ferror(inCFGFile))
> {
> fprintf(errorFile, "%s\n", "Warning: config file is malformed");
> break;
> }
> else
> {
> TKQ_Scancode_Array[i] = currentScancode;
> }
> }
>
> fclose(errorFile);
> fclose(inCFGFile);
> return;
> }
>
> /* TKQ: Debug function; prints the keymap to "debug.txt" */
> void TKQ_PrintKeymap()
> {
> FILE * dbgOut;
> fopen_s(&dbgOut, "debug.txt", "w");
>
> for (int i = 0; i < SDL_NUM_SCANCODES; ++i)
> {
> fprintf_s(dbgOut, "%u\n", TKQ_Scancode_Array[i]);
> }
> fclose(dbgOut);
> return;
> }
>
558a905,908
> /* TKQ: Load the keymap on keyboard initialisation */
> TKQ_LoadKeymap("keybindings.cfg", "error.log");
> /* TKQ: debug function call */
> //TKQ_PrintKeymap();
765a1116,1117
>
> scancode = TKQ_Scancode_Array[scancode];
775c1127
< event.key.keysym.sym = keyboard->keymap[scancode];
---
> event.key.keysym.sym = SDL_default_keymap[scancode];