diff --git a/stepmania/src/RageInput.cpp b/stepmania/src/RageInput.cpp index 94ef51eae4..8e341fa695 100644 --- a/stepmania/src/RageInput.cpp +++ b/stepmania/src/RageInput.cpp @@ -269,78 +269,30 @@ bool DeviceInput::fromString( const CString &s ) return true; } +static const char dik_charmap[] = { + /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ +/* 0x0x */ 0, 0,'1','2','3','4','5','6','7', '8','9', '0','-','=', 0, 0, +/* 0x1x */ 'q','w','e','r','t','y','u','i','u', 'p','[', ']', 0, 0,'a','s', +/* 0x2x */ 'd','f','g','h','j','k','l',';','\'','`', 0,'\\','z','x','c','v', +/* 0x3x */ 'b','n','m',',','.','/', 0,'*', 0, ' ', 0, 0, 0, 0, 0, 0, +/* 0x4x */ 0, 0, 0, 0, 0, 0, 0,'7','8', '9','-', '4','5','6','+','1', +/* 0x5x */ '2','3','0','.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x6x */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x7x */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'.', 0, +/* 0x8x */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'=', 0, 0, +/* 0x9x */ 0,'@',':','_', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0xAx */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0xBx */ 0, 0, 0,',', 0,'/', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + char DeviceInput::ToChar() const { switch( device ) { case DEVICE_KEYBOARD: - switch( button ) - { - case DIK_1: return '1'; - case DIK_2: return '2'; - case DIK_3: return '3'; - case DIK_4: return '4'; - case DIK_5: return '5'; - case DIK_6: return '6'; - case DIK_7: return '7'; - case DIK_8: return '8'; - case DIK_9: return '9'; - case DIK_0: return '0'; - case DIK_MINUS: return '-'; - case DIK_EQUALS: return '='; - case DIK_Q: return 'Q'; - case DIK_W: return 'W'; - case DIK_E: return 'E'; - case DIK_R: return 'R'; - case DIK_T: return 'T'; - case DIK_Y: return 'Y'; - case DIK_U: return 'U'; - case DIK_I: return 'I'; - case DIK_O: return 'O'; - case DIK_P: return 'P'; - case DIK_LBRACKET: return '['; - case DIK_RBRACKET: return ']'; - case DIK_A: return 'A'; - case DIK_S: return 'S'; - case DIK_D: return 'D'; - case DIK_F: return 'F'; - case DIK_G: return 'G'; - case DIK_H: return 'H'; - case DIK_J: return 'J'; - case DIK_K: return 'K'; - case DIK_L: return 'L'; - case DIK_SEMICOLON: return ';'; - case DIK_APOSTROPHE:return '\''; - case DIK_BACKSLASH: return '\\'; - case DIK_Z: return 'Z'; - case DIK_X: return 'X'; - case DIK_C: return 'C'; - case DIK_V: return 'V'; - case DIK_B: return 'B'; - case DIK_N: return 'N'; - case DIK_M: return 'M'; - case DIK_COMMA: return ','; - case DIK_PERIOD: return '.'; - case DIK_SLASH: return '/'; - case DIK_MULTIPLY: return '*'; - case DIK_SPACE: return ' '; - case DIK_NUMPAD7: return '7'; - case DIK_NUMPAD8: return '8'; - case DIK_NUMPAD9: return '9'; - case DIK_SUBTRACT: return '-'; - case DIK_NUMPAD4: return '4'; - case DIK_NUMPAD5: return '5'; - case DIK_NUMPAD6: return '6'; - case DIK_ADD: return '+'; - case DIK_NUMPAD1: return '1'; - case DIK_NUMPAD2: return '2'; - case DIK_NUMPAD3: return '3'; - case DIK_NUMPAD0: return '0'; - case DIK_DECIMAL: return '.'; - default: - return '\0'; - } - break; + if( button < sizeof(dik_charmap) ) + return dik_charmap[button]; + return '\0'; default: return '\0'; }