From: Toni Wilen Date: Fri, 22 Mar 2024 18:43:23 +0000 (+0200) Subject: Option to disable default on screen keyboard pad button mapping X-Git-Tag: 5300~71 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=8d50bc55b2a94f1a1c18e154fef6f544e5ffb727;p=francis%2Fwinuae.git Option to disable default on screen keyboard pad button mapping --- diff --git a/include/inputdevice.h b/include/inputdevice.h index 2ffce148..188f2131 100644 --- a/include/inputdevice.h +++ b/include/inputdevice.h @@ -206,8 +206,8 @@ extern void release_keys(void); extern int input_get_default_mouse (struct uae_input_device *uid, int num, int port, int af, bool gp, bool wheel, bool joymouseswap); extern int input_get_default_lightpen (struct uae_input_device *uid, int num, int port, int af, bool gp, bool joymouseswap, int submode); -extern int input_get_default_joystick (struct uae_input_device *uid, int num, int port, int af, int mode, bool gp, bool joymouseswap); -extern int input_get_default_joystick_analog (struct uae_input_device *uid, int num, int port, int af, bool gp, bool joymouseswap); +extern int input_get_default_joystick (struct uae_input_device *uid, int num, int port, int af, int mode, bool gp, bool joymouseswap, bool default_osk); +extern int input_get_default_joystick_analog (struct uae_input_device *uid, int num, int port, int af, bool gp, bool joymouseswap, bool default_osk); extern int input_get_default_keyboard (int num); #define DEFEVENT(A, B, C, D, E, F) INPUTEVENT_ ## A, diff --git a/include/options.h b/include/options.h index 284a760a..677cb136 100644 --- a/include/options.h +++ b/include/options.h @@ -946,6 +946,7 @@ struct uae_prefs { bool input_autoswitch; bool input_autoswitchleftright; bool input_advancedmultiinput; + bool input_default_onscreen_keyboard; struct uae_input_device joystick_settings[MAX_INPUT_SETTINGS][MAX_INPUT_DEVICES]; struct uae_input_device mouse_settings[MAX_INPUT_SETTINGS][MAX_INPUT_DEVICES]; struct uae_input_device keyboard_settings[MAX_INPUT_SETTINGS][MAX_INPUT_DEVICES]; diff --git a/inputdevice.cpp b/inputdevice.cpp index a6403c25..9ac34701 100644 --- a/inputdevice.cpp +++ b/inputdevice.cpp @@ -1046,6 +1046,7 @@ void write_inputdevice_config (struct uae_prefs *p, struct zfile *f) cfgfile_dwrite(f, _T("input.devicematchflags"), _T("%d"), p->input_device_match_mask); cfgfile_dwrite_bool(f, _T("input.autoswitchleftright"), p->input_autoswitchleftright); cfgfile_dwrite_bool(f, _T("input.advancedmultiinput"), p->input_advancedmultiinput); + cfgfile_dwrite_bool(f, _T("input.default_osk"), p->input_default_onscreen_keyboard); for (id = 0; id < MAX_INPUT_SETTINGS; id++) { TCHAR tmp[MAX_DPATH]; if (id < GAMEPORT_INPUT_SETTINGS) { @@ -1649,6 +1650,8 @@ void read_inputdevice_config (struct uae_prefs *pr, const TCHAR *option, TCHAR * pr->input_autoswitchleftright = !_tcsicmp(value, _T("true")) || _tstol(value) != 0; if (!strcasecmp(p, _T("advancedmultiinput"))) pr->input_advancedmultiinput = !_tcsicmp(value, _T("true")) || _tstol(value) != 0; + if (!strcasecmp(p, _T("default_osk"))) + pr->input_default_onscreen_keyboard = !_tcsicmp(value, _T("true")) || _tstol(value) != 0; if (!strcasecmp(p, _T("keyboard_type"))) { cfgfile_strval(p, value, p, &pr->input_keyboard_type, kbtypes, 0); keyboard_default = keyboard_default_table[pr->input_keyboard_type]; @@ -7503,11 +7506,11 @@ static void compatibility_copy (struct uae_prefs *prefs, bool gameports) case JSEM_MODE_JOYSTICK: case JSEM_MODE_GAMEPAD: case JSEM_MODE_JOYSTICK_CD32: - input_get_default_joystick(mice, joy, i, af, mode, !gameports, true); + input_get_default_joystick(mice, joy, i, af, mode, !gameports, true, prefs->input_default_onscreen_keyboard); joymodes[i][j] = mode; break; case JSEM_MODE_JOYSTICK_ANALOG: - input_get_default_joystick_analog(mice, joy, i, af, !gameports, true); + input_get_default_joystick_analog(mice, joy, i, af, !gameports, true, prefs->input_default_onscreen_keyboard); joymodes[i][j] = JSEM_MODE_JOYSTICK_ANALOG; break; } @@ -7539,7 +7542,7 @@ static void compatibility_copy (struct uae_prefs *prefs, bool gameports) { bool iscd32 = mode == JSEM_MODE_JOYSTICK_CD32 || (mode == JSEM_MODE_DEFAULT && prefs->cs_cd32cd); int jmode = iscd32 ? JSEM_MODE_JOYSTICK_CD32 : mode; - input_get_default_joystick(joysticks, joy, i, af, jmode, !gameports, false); + input_get_default_joystick(joysticks, joy, i, af, jmode, !gameports, false, prefs->input_default_onscreen_keyboard); if (iscd32) joymodes[i][j] = JSEM_MODE_JOYSTICK_CD32; else if (mode == JSEM_MODE_GAMEPAD) @@ -7549,7 +7552,7 @@ static void compatibility_copy (struct uae_prefs *prefs, bool gameports) break; } case JSEM_MODE_JOYSTICK_ANALOG: - input_get_default_joystick_analog(joysticks, joy, i, af, !gameports, false); + input_get_default_joystick_analog(joysticks, joy, i, af, !gameports, false, prefs->input_default_onscreen_keyboard); joymodes[i][j] = JSEM_MODE_JOYSTICK_ANALOG; break; case JSEM_MODE_MOUSE: @@ -7563,7 +7566,7 @@ static void compatibility_copy (struct uae_prefs *prefs, bool gameports) break; case JSEM_MODE_MOUSE_CDTV: joymodes[i][j] = JSEM_MODE_MOUSE_CDTV; - input_get_default_joystick(joysticks, joy, i, af, mode, !gameports, false); + input_get_default_joystick(joysticks, joy, i, af, mode, !gameports, false, prefs->input_default_onscreen_keyboard); break; } @@ -7672,7 +7675,7 @@ static void compatibility_copy (struct uae_prefs *prefs, bool gameports) int af = jd->autofire; joy = jsem_isjoy(i, j, prefs); if (joy >= 0) { - input_get_default_joystick(joysticks, joy, i, af, 0, !gameports, false); + input_get_default_joystick(joysticks, joy, i, af, 0, !gameports, false, prefs->input_default_onscreen_keyboard); _tcsncpy(jd->idc.name, idev[IDTYPE_JOYSTICK].get_friendlyname (joy), MAX_JPORT_NAME - 1); _tcsncpy(jd->idc.configname, idev[IDTYPE_JOYSTICK].get_uniquename (joy), MAX_JPORT_CONFIG - 1); jd->idc.name[MAX_JPORT_NAME - 1] = 0; @@ -8273,6 +8276,7 @@ void inputdevice_default_prefs (struct uae_prefs *p) p->input_autoswitchleftright = false; p->input_device_match_mask = -1; keyboard_default = keyboard_default_table[p->input_keyboard_type]; + p->input_default_onscreen_keyboard = true; inputdevice_default_kb_all (p); } diff --git a/od-win32/dinput.cpp b/od-win32/dinput.cpp index d8c64fd8..0ed0e4e9 100644 --- a/od-win32/dinput.cpp +++ b/od-win32/dinput.cpp @@ -4569,7 +4569,7 @@ int input_get_default_lightpen (struct uae_input_device *uid, int i, int port, i return 0; } -int input_get_default_joystick (struct uae_input_device *uid, int i, int port, int af, int mode, bool gp, bool joymouseswap) +int input_get_default_joystick (struct uae_input_device *uid, int i, int port, int af, int mode, bool gp, bool joymouseswap, bool default_osk) { int j; struct didata *did = NULL; @@ -4607,7 +4607,7 @@ int input_get_default_joystick (struct uae_input_device *uid, int i, int port, i if (isrealbutton (did, 2)) setid (uid, i, ID_BUTTON_OFFSET + 2, 0, port, port ? INPUTEVENT_JOY2_3RD_BUTTON : INPUTEVENT_JOY1_3RD_BUTTON, gp); } - if (isrealbutton(did, 3) && isemptyslot(uid, i, ID_BUTTON_OFFSET + 3, 0, port)) { + if (isrealbutton(did, 3) && isemptyslot(uid, i, ID_BUTTON_OFFSET + 3, 0, port) && default_osk) { setid(uid, i, ID_BUTTON_OFFSET + 3, 0, port, INPUTEVENT_SPC_OSK, gp); } } @@ -4642,7 +4642,7 @@ int input_get_default_joystick (struct uae_input_device *uid, int i, int port, i return 0; } -int input_get_default_joystick_analog (struct uae_input_device *uid, int i, int port, int af, bool gp, bool joymouseswap) +int input_get_default_joystick_analog (struct uae_input_device *uid, int i, int port, int af, bool gp, bool joymouseswap, bool default_osk) { int j; struct didata *did; @@ -4665,7 +4665,7 @@ int input_get_default_joystick_analog (struct uae_input_device *uid, int i, int setid(uid, i, ID_BUTTON_OFFSET + 2, 0, port, port ? INPUTEVENT_JOY2_UP : INPUTEVENT_JOY1_UP, gp); if (isrealbutton(did, 3)) setid(uid, i, ID_BUTTON_OFFSET + 3, 0, port, port ? INPUTEVENT_JOY2_DOWN : INPUTEVENT_JOY1_DOWN, gp); - if (isrealbutton(did, 4) && isemptyslot(uid, i, ID_BUTTON_OFFSET + 4, 0, port)) + if (isrealbutton(did, 4) && isemptyslot(uid, i, ID_BUTTON_OFFSET + 4, 0, port) && default_osk) setid(uid, i, ID_BUTTON_OFFSET + 4, 0, port, INPUTEVENT_SPC_OSK, gp); for (j = 2; j < MAX_MAPPINGS - 1; j++) { diff --git a/od-win32/resources/resource.h b/od-win32/resources/resource.h index 07a8c87f..ff3012ae 100644 --- a/od-win32/resources/resource.h +++ b/od-win32/resources/resource.h @@ -436,6 +436,8 @@ #define IDS_SOUND_CLONED71 441 #define IDS_SOUND_71 442 #define IDS_SOUND_FILTER_ON_FIXEDONLY 443 +#define IDS_MISCLISTITEMS5 444 +#define IDS_MISCLISTITEMS6 445 #define IDS_QS_MODELS 1000 #define IDS_QS_MODEL_A500 1001 #define IDS_QS_MODEL_A500P 1002 diff --git a/od-win32/resources/winuae.rc b/od-win32/resources/winuae.rc index a362af68..b78bbd5c 100644 --- a/od-win32/resources/winuae.rc +++ b/od-win32/resources/winuae.rc @@ -2174,7 +2174,7 @@ BEGIN IDS_WSTYLE_EXTENDED "Extended" IDS_MISCLISTITEMS1 "Untrap = middle button\nShow GUI on startup\nUse CTRL-F11 to quit\nDon't show taskbar button\nDon't show notification icon\n" IDS_MISCLISTITEMS2 "Main window always on top\nGUI window always on top\nDisable screensaver\nSynchronize clock\nOne second reboot pause\nFaster RTG\nClipboard sharing\nAllow native code\n" - IDS_MISCLISTITEMS3 "Native on-screen display\nRTG on-screen display\nCreate winuaelog.txt log\nLog illegal memory accesses\nBlank unused displays\nStart mouse uncaptured\nStart minimized\nMinimize when focus is lost\nBlack frame insertion\nMaster floppy write protection\nMaster harddrive write protection\nHide all UAE autoconfig boards\nRight Control = Right Windows key\n" + IDS_MISCLISTITEMS3 "Native on-screen display\nRTG on-screen display\nCreate winuaelog.txt log\nLog illegal memory accesses\nBlank unused displays\nStart mouse uncaptured\n" IDS_JOYMODE_WHEELMOUSE "Wheel Mouse" IDS_NUMSG_KS68030PLUS "The selected system ROM requires a 68030 or higher CPU." IDS_SELECTTAPE "Select a Tape directory or archive file..." @@ -2190,7 +2190,7 @@ END STRINGTABLE BEGIN - IDS_MISCLISTITEMS4 "Windows shutdown/logoff notification\nWarn when attempting to close window\nPower led dims when audio filter is disabled\nAutomatically capture mouse when window is activated\nDebug memory space\nForce hard reset if CPU halted\nA600/A1200/A4000 IDE scsi.device disable\nWarp mode reset\nGUI gamepad control\n" + IDS_MISCLISTITEMS4 "Start minimized\nMinimize when focus is lost\nBlack frame insertion\nMaster floppy write protection\nMaster harddrive write protection\n" IDS_SHUTDOWN_NOTIFICATION "Emulation session active" IDS_QUIT_WARNING "Are you sure you want to quit WinUAE?" IDS_UNMAPPED_ADDRESS "Floating\nAll zeros\nAll ones\n" @@ -2240,6 +2240,8 @@ BEGIN IDS_SOUND_CLONED71 "Cloned stereo (7.1)" IDS_SOUND_71 "7.1 channels" IDS_SOUND_FILTER_ON_FIXEDONLY "Always on (Fixed only)" + IDS_MISCLISTITEMS5 "Hide all UAE autoconfig boards\nRight Control = Right Windows key\nWindows shutdown/logoff notification\nWarn when attempting to close window\nPower led dims when audio filter is disabled\nAutomatically capture mouse when window is activated\nDebug memory space\n" + IDS_MISCLISTITEMS6 "Force hard reset if CPU halted\nA600/A1200/A4000 IDE scsi.device disable\nWarp mode reset\nGUI gamepad control\nDefault on screen keyboard (Pad button 4)\n" END #endif // English (United Kingdom) resources diff --git a/od-win32/win32gui.cpp b/od-win32/win32gui.cpp index 9fc4ab2f..ef605821 100644 --- a/od-win32/win32gui.cpp +++ b/od-win32/win32gui.cpp @@ -4799,6 +4799,7 @@ static const struct miscentry misclist[] = { { 0, 0, _T("A600/A1200/A4000 IDE scsi.device disable"), &workprefs.scsidevicedisable }, { 0, 1, _T("Warp mode reset"), &workprefs.turbo_boot }, { 0, 1, _T("GUI game pad control"), &workprefs.win32_gui_control }, + { 0, 1, _T("Default on screen keyboard (Pad button 4)"), &workprefs.input_default_onscreen_keyboard }, { 0, 0, NULL } }; @@ -5341,7 +5342,7 @@ static void InitializeListView (HWND hDlg) } else if (lv_type == LV_MISC1) { - int itemids[] = { IDS_MISCLISTITEMS1, IDS_MISCLISTITEMS2, IDS_MISCLISTITEMS3, IDS_MISCLISTITEMS4 , -1 }; + int itemids[] = { IDS_MISCLISTITEMS1, IDS_MISCLISTITEMS2, IDS_MISCLISTITEMS3, IDS_MISCLISTITEMS4, IDS_MISCLISTITEMS5, IDS_MISCLISTITEMS6, -1 }; int itemoffset = 0; int itemcnt = 0; listview_column_width[0] = MulDiv(150, dpi, 72);