diff options
author | 2016-11-15 14:04:28 -0500 | |
---|---|---|
committer | 2016-11-15 14:04:28 -0500 | |
commit | 13a496efd799b6cd8b889a45aa446c35f9a2b7d9 (patch) | |
tree | 7f0c45f5e17884d939018928252eafc410cbd820 | |
parent | c2cc79d2ea5385463a69425a2479b3b27c2b0c33 (diff) |
UWP: Better keyboard key names (nw)
-rw-r--r-- | src/osd/modules/input/input_common.cpp | 14 | ||||
-rw-r--r-- | src/osd/modules/input/input_common.h | 2 | ||||
-rw-r--r-- | src/osd/modules/input/input_uwp.cpp | 13 |
3 files changed, 15 insertions, 14 deletions
diff --git a/src/osd/modules/input/input_common.cpp b/src/osd/modules/input/input_common.cpp index 50500aea82e..be6cf2f9a12 100644 --- a/src/osd/modules/input/input_common.cpp +++ b/src/osd/modules/input/input_common.cpp @@ -270,17 +270,15 @@ int keyboard_trans_table::vkey_for_mame_code(input_code code) const #if defined(OSD_UWP) -input_item_id keyboard_trans_table::map_vkey_to_itemid(Windows::System::VirtualKey vkey) const +const char* keyboard_trans_table::ui_label_for_mame_key(input_item_id itemid) const { - int tablenum; - // scan the table for a match - for (tablenum = 0; tablenum < m_table_size; tablenum++) - if (m_table[tablenum].virtual_key == vkey) - return m_table[tablenum].mame_key; + for (int tablenum = 0; tablenum < m_table_size; tablenum++) + if (m_table[tablenum].mame_key == itemid) + return m_table[tablenum].ui_name; - // default to an "other" switch - return ITEM_ID_OTHER_SWITCH; + // We didn't find one + return nullptr; } #endif diff --git a/src/osd/modules/input/input_common.h b/src/osd/modules/input/input_common.h index 10dbf85d023..c98845eb885 100644 --- a/src/osd/modules/input/input_common.h +++ b/src/osd/modules/input/input_common.h @@ -402,7 +402,7 @@ public: int vkey_for_mame_code(input_code code) const; #elif defined(OSD_UWP) input_item_id map_di_scancode_to_itemid(int di_scancode) const; - input_item_id map_vkey_to_itemid(Windows::System::VirtualKey vkey) const; + const char* ui_label_for_mame_key(input_item_id code) const; #endif static keyboard_trans_table& instance() diff --git a/src/osd/modules/input/input_uwp.cpp b/src/osd/modules/input/input_uwp.cpp index bee9e2367ee..d67ece8085b 100644 --- a/src/osd/modules/input/input_uwp.cpp +++ b/src/osd/modules/input/input_uwp.cpp @@ -235,16 +235,19 @@ internal: void Configure() { keyboard_trans_table &table = keyboard_trans_table::instance(); - - char keyname[256]; // populate it for (int keynum = 0; keynum < MAX_KEYS; keynum++) { input_item_id itemid = table.map_di_scancode_to_itemid(keynum); - - //if (GetKeyNameTextA(((keynum & 0x7f) << 16) | ((keynum & 0x80) << 17), keyname, ARRAY_LENGTH(keyname)) == 0) - snprintf(keyname, ARRAY_LENGTH(keyname), "Scan%03d", keynum); + const char *keyname = table.ui_label_for_mame_key(itemid); + + char temp[256]; + if (keyname == nullptr) + { + snprintf(temp, ARRAY_LENGTH(temp), "Scan%03d", keynum); + keyname = temp; + } // add the item to the device this->InputDevice->add_item(keyname, itemid, generic_button_get_state<std::uint8_t>, &keyboard.state[keynum]); |