Add an UI for modifying controls for PC

This commit is contained in:
oioitff
2013-04-18 18:38:43 +08:00
parent 32f344d6bd
commit 7ff4f34a48
5 changed files with 330 additions and 68 deletions
+139 -1
View File
@@ -67,4 +67,142 @@ int KeyboardDevice::UpdateState(InputState &input_state) {
input_state.pad_lstick_x += analogX;
input_state.pad_lstick_y += analogY;
return 0;
}
}
struct key_name {
unsigned char key;
char name[10];
};
const key_name key_name_map[] = {
{'A', "A"},
{'B', "B"},
{'C', "C"},
{'D', "D"},
{'E', "E"},
{'F', "F"},
{'G', "G"},
{'H', "H"},
{'I', "I"},
{'J', "J"},
{'K', "K"},
{'L', "L"},
{'M', "M"},
{'N', "N"},
{'O', "O"},
{'P', "P"},
{'Q', "Q"},
{'R', "R"},
{'S', "S"},
{'T', "T"},
{'U', "U"},
{'V', "V"},
{'W', "W"},
{'X', "X"},
{'Y', "Y"},
{'Z', "Z"},
{'1', "1"},
{'2', "2"},
{'3', "3"},
{'4', "4"},
{'5', "5"},
{'6', "6"},
{'7', "7"},
{'8', "8"},
{'9', "9"},
{'0', "0"},
{VK_BACK, "Backspace"},
{VK_TAB, "Tab"},
{VK_CLEAR, "Clear"},
{VK_RETURN, "Return"},
{VK_SHIFT, "Shift"},
{VK_CONTROL, "Ctrl"},
{VK_MENU, "Alt"},
{VK_PAUSE, "Pause"},
{VK_CAPITAL, "Caps"},
{VK_ESCAPE, "Esc"},
{VK_SPACE, "Space"},
{VK_PRIOR, "PgUp"},
{VK_NEXT, "PgDown"},
{VK_END, "End"},
{VK_HOME, "Home"},
{VK_LEFT, "Left"},
{VK_UP, "Up"},
{VK_RIGHT, "Right"},
{VK_DOWN, "Down"},
{VK_SELECT, "Select"},
{VK_INSERT, "Insert"},
{VK_DELETE, "Delete"},
{VK_HELP, "Help"},
{VK_NUMPAD0, "Num 0"},
{VK_NUMPAD1, "Num 1"},
{VK_NUMPAD2, "Num 2"},
{VK_NUMPAD3, "Num 3"},
{VK_NUMPAD4, "Num 4"},
{VK_NUMPAD5, "Num 5"},
{VK_NUMPAD6, "Num 6"},
{VK_NUMPAD7, "Num 7"},
{VK_NUMPAD8, "Num 8"},
{VK_NUMPAD9, "Num 9"},
{VK_MULTIPLY, "Num *"},
{VK_ADD, "Num +"},
{VK_SEPARATOR, "Num Sep"},
{VK_SUBTRACT, "Num -"},
{VK_DECIMAL, "Num ."},
{VK_DIVIDE, "Num /"},
{VK_F1, "F1"},
{VK_F2, "F2"},
{VK_F3, "F3"},
{VK_F4, "F4"},
{VK_F5, "F5"},
{VK_F6, "F6"},
{VK_F7, "F7"},
{VK_F8, "F8"},
{VK_F9, "F9"},
{VK_F10, "F10"},
{VK_F11, "F11"},
{VK_F12, "F12"},
{VK_OEM_NEC_EQUAL, "Num ="},
{VK_OEM_1, ";"},
{VK_OEM_PLUS, "+"},
{VK_OEM_COMMA, ","},
{VK_OEM_MINUS, "-"},
{VK_OEM_PERIOD, "."},
{VK_OEM_2, "?"},
{VK_OEM_3, "~"},
{VK_OEM_4, "["},
{VK_OEM_5, "|"},
{VK_OEM_6, "]"},
{VK_OEM_7, "'"}
};
const int key_name_map_size = sizeof(key_name_map) / sizeof(key_name);
const char * getVirtualKeyName(unsigned char key)
{
for (int i = 0; i < key_name_map_size; i++) {
if (key_name_map[i].key == key)
return key_name_map[i].name;
}
return 0;
}
bool saveControlsToFile() {
FILE *wfp = fopen("PPSSPPControls.dat", "wb");
if (!wfp)
return false;
fwrite(key_pad_map, 1, sizeof(key_pad_map), wfp);
fwrite(analog_ctrl_map, 1, sizeof(analog_ctrl_map), wfp);
fclose(wfp);
return true;
}
bool loadControlsFromFile() {
FILE *rfp = fopen("PPSSPPControls.dat", "rb");
if (!rfp)
return false;
fread(key_pad_map, 1, sizeof(key_pad_map), rfp);
fread(analog_ctrl_map, 1, sizeof(analog_ctrl_map), rfp);
fclose(rfp);
return true;
}