HRESULT CRetroArchControls::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) { int current_index, i, controlno; char buttons[RARCH_FIRST_META_KEY][128]; m_controlnoslider.GetValue(&controlno); if ( hObjPressed == m_controlslist) { current_index = m_controlslist.GetCurSel(); switch(current_index) { case SETTING_CONTROLS_DEFAULT_ALL: rarch_input_set_default_keybinds(0); for(i = 0; i < RARCH_FIRST_META_KEY; i++) { snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_input_get_default_keybind_name(i), controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); rarch_convert_char_to_wchar(strw_buffer, buttons[i], sizeof(strw_buffer)); m_controlslist.SetText(i, strw_buffer); } break; default: rarch_input_set_keybind(controlno, KEYBIND_DEFAULT, current_index); snprintf(buttons[current_index], sizeof(buttons[current_index]), "%s #%d: %s", rarch_input_get_default_keybind_name(current_index), controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); rarch_convert_char_to_wchar(strw_buffer, buttons[current_index], sizeof(strw_buffer)); m_controlslist.SetText(current_index, strw_buffer); break; } } bHandled = TRUE; return 0; }
HRESULT CRetroArchControls::OnControlNavigate(XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled) { char button[128]; char buttons[RARCH_FIRST_META_KEY][128]; int controlno, i, current_index; current_index = m_controlslist.GetCurSel(); m_controlnoslider.GetValue(&controlno); for(i = 0; i < RARCH_FIRST_META_KEY; i++) { snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_input_get_default_keybind_name(i), controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); rarch_convert_char_to_wchar(strw_buffer, buttons[i], sizeof(strw_buffer)); m_controlslist.SetText(i, strw_buffer); } switch(pControlNavigateData->nControlNavigate) { case XUI_CONTROL_NAVIGATE_LEFT: if(current_index > 0 && current_index != SETTING_CONTROLS_DEFAULT_ALL) { rarch_input_set_keybind(controlno, KEYBIND_DECREMENT, current_index); snprintf(button, sizeof(button), "%s #%d: %s", rarch_input_get_default_keybind_name(current_index), controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); rarch_convert_char_to_wchar(strw_buffer, button, sizeof(strw_buffer)); m_controlslist.SetText(current_index, strw_buffer); } break; case XUI_CONTROL_NAVIGATE_RIGHT: if(current_index < RARCH_FIRST_META_KEY && current_index != SETTING_CONTROLS_DEFAULT_ALL) { rarch_input_set_keybind(controlno, KEYBIND_INCREMENT, current_index); snprintf(button, sizeof(button), "%s #%d: %s", rarch_input_get_default_keybind_name(current_index), controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); rarch_convert_char_to_wchar(strw_buffer, button, sizeof(strw_buffer)); m_controlslist.SetText(current_index, strw_buffer); } break; case XUI_CONTROL_NAVIGATE_UP: case XUI_CONTROL_NAVIGATE_DOWN: break; } return 0; }
HRESULT CRetroArchControls::OnControlNavigate( XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled) { char button[128]; char buttons[RARCH_FIRST_META_KEY][128]; int controlno, i, current_index; current_index = m_controlslist.GetCurSel(); m_controlnoslider.GetValue(&controlno); for(i = 0; i < RARCH_FIRST_META_KEY; i++) { snprintf(buttons[i], sizeof(buttons[i]), "%s #%d: %s", rarch_input_get_default_keybind_name(i), controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][i].joykey)); convert_char_to_wchar(strw_buffer, buttons[i], sizeof(strw_buffer)); m_controlslist.SetText(i, strw_buffer); } switch(pControlNavigateData->nControlNavigate) { case XUI_CONTROL_NAVIGATE_LEFT: switch(current_index) { case SETTING_CONTROLS_DPAD_EMULATION: switch(g_settings.input.dpad_emulation[controlno]) { case DPAD_EMULATION_NONE: break; case DPAD_EMULATION_LSTICK: input_xinput.set_analog_dpad_mapping(0, DPAD_EMULATION_NONE, controlno); break; case DPAD_EMULATION_RSTICK: input_xinput.set_analog_dpad_mapping(0, DPAD_EMULATION_LSTICK, controlno); break; } break; case SETTING_CONTROLS_DEFAULT_ALL: break; default: rarch_input_set_keybind(controlno, KEYBIND_DECREMENT, current_index); snprintf(button, sizeof(button), "%s #%d: %s", rarch_input_get_default_keybind_name(current_index), controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); convert_char_to_wchar(strw_buffer, button, sizeof(strw_buffer)); m_controlslist.SetText(current_index, strw_buffer); break; } break; case XUI_CONTROL_NAVIGATE_RIGHT: switch(current_index) { case SETTING_CONTROLS_DPAD_EMULATION: switch(g_settings.input.dpad_emulation[controlno]) { case DPAD_EMULATION_NONE: input_xinput.set_analog_dpad_mapping(0, DPAD_EMULATION_LSTICK, controlno); break; case DPAD_EMULATION_LSTICK: input_xinput.set_analog_dpad_mapping(0, DPAD_EMULATION_RSTICK, controlno); break; case DPAD_EMULATION_RSTICK: break; } break; case SETTING_CONTROLS_DEFAULT_ALL: break; default: rarch_input_set_keybind(controlno, KEYBIND_INCREMENT, current_index); snprintf(button, sizeof(button), "%s #%d: %s", rarch_input_get_default_keybind_name(current_index), controlno, rarch_input_find_platform_key_label(g_settings.input.binds[controlno][current_index].joykey)); convert_char_to_wchar(strw_buffer, button, sizeof(strw_buffer)); m_controlslist.SetText(current_index, strw_buffer); break; } break; case XUI_CONTROL_NAVIGATE_UP: case XUI_CONTROL_NAVIGATE_DOWN: break; } snprintf(button, sizeof(button), "D-Pad Emulation: %s", rarch_dpad_emulation_name_lut[g_settings.input.dpad_emulation[controlno]]); convert_char_to_wchar(strw_buffer, button, sizeof(strw_buffer)); m_controlslist.SetText(SETTING_CONTROLS_DPAD_EMULATION, strw_buffer); m_controlslist.SetText(SETTING_CONTROLS_DEFAULT_ALL, L"Reset all buttons to default"); return 0; }