Archie: option to swap mouse buttons 2/3.
This commit is contained in:
21
menu.cpp
21
menu.cpp
@@ -869,7 +869,7 @@ void HandleUI(void)
|
||||
case MENU_ARCHIE_MAIN1:
|
||||
OsdSetTitle(user_io_get_core_name(), OSD_ARROW_RIGHT | OSD_ARROW_LEFT);
|
||||
|
||||
menumask = 0x7f;
|
||||
menumask = 0xff;
|
||||
OsdWrite(0, "", 0, 0);
|
||||
|
||||
strcpy(s, " Floppy 0: ");
|
||||
@@ -888,21 +888,23 @@ void HandleUI(void)
|
||||
|
||||
OsdWrite(5, "", 0, 0);
|
||||
|
||||
strcpy(s, " Aspect ratio: ");
|
||||
strcpy(s, " Aspect ratio: ");
|
||||
strcat(s, archie_get_ar() ? "16:9" : "4:3");
|
||||
OsdWrite(6, s, menusub == 3, 0);
|
||||
|
||||
OsdWrite(7, "", 0, 0);
|
||||
sprintf(s, " Stereo mix: %s", config_stereo_msg[archie_get_amix()]);
|
||||
sprintf(s, " Stereo mix: %s", config_stereo_msg[archie_get_amix()]);
|
||||
OsdWrite(8, s, menusub == 4, 0);
|
||||
|
||||
OsdWrite(9, "", 0, 0);
|
||||
sprintf(s, " Swap joysticks: %s", user_io_get_joyswap() ? "Yes" : "No");
|
||||
sprintf(s, " Swap joysticks: %s", user_io_get_joyswap() ? "Yes" : "No");
|
||||
OsdWrite(10, s, menusub == 5, 0);
|
||||
sprintf(s, " Swap mouse btn 2/3: %s", archie_get_mswap() ? "Yes" : "No");
|
||||
OsdWrite(11, s, menusub == 6, 0);
|
||||
|
||||
for (int i = 11; i<15; i++) OsdWrite(i, "", 0, 0);
|
||||
for (int i = 12; i<15; i++) OsdWrite(i, "", 0, 0);
|
||||
|
||||
OsdWrite(15, STD_EXIT, menusub == 6, 0);
|
||||
OsdWrite(15, STD_EXIT, menusub == 7, 0);
|
||||
menustate = MENU_ARCHIE_MAIN2;
|
||||
parentstate = MENU_ARCHIE_MAIN1;
|
||||
|
||||
@@ -943,7 +945,12 @@ void HandleUI(void)
|
||||
menustate = MENU_ARCHIE_MAIN1;
|
||||
break;
|
||||
|
||||
case 6: // Exit
|
||||
case 6:
|
||||
archie_set_mswap(!archie_get_mswap());
|
||||
menustate = MENU_ARCHIE_MAIN1;
|
||||
break;
|
||||
|
||||
case 7: // Exit
|
||||
menustate = MENU_NONE1;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "archie.h"
|
||||
#include "../../debug.h"
|
||||
#include "../../user_io.h"
|
||||
#include "../../input.h"
|
||||
|
||||
#define CONFIG_FILENAME "ARCHIE.CFG"
|
||||
|
||||
@@ -83,6 +84,17 @@ int archie_get_ar()
|
||||
return config.system_ctrl & 1;
|
||||
}
|
||||
|
||||
static int mswap = 0;
|
||||
void archie_set_mswap(char i)
|
||||
{
|
||||
mswap = i;
|
||||
}
|
||||
|
||||
int archie_get_mswap()
|
||||
{
|
||||
return mswap;
|
||||
}
|
||||
|
||||
void archie_set_amix(char i)
|
||||
{
|
||||
config.system_ctrl = (config.system_ctrl & ~0b110) | ((i & 3)<<1);
|
||||
@@ -264,6 +276,7 @@ void archie_mouse(unsigned char b, int16_t x, int16_t y)
|
||||
// ignore mouse buttons if key scanning is disabled
|
||||
if (flags & FLAG_SCAN_ENABLED)
|
||||
{
|
||||
static const uint8_t remap[] = { 0, 2, 1 };
|
||||
static unsigned char buts = 0;
|
||||
uint8_t s;
|
||||
|
||||
@@ -275,7 +288,7 @@ void archie_mouse(unsigned char b, int16_t x, int16_t y)
|
||||
{
|
||||
unsigned char prefix = (b&mask) ? KDDA : KUDA;
|
||||
archie_kbd_send(STATE_WAIT4ACK1, prefix | 0x07);
|
||||
archie_kbd_send(STATE_WAIT4ACK2, prefix | s);
|
||||
archie_kbd_send(STATE_WAIT4ACK2, prefix | ((!mswap ^ !(get_key_mod() & (RGUI|LGUI))) ? s : remap[s]));
|
||||
}
|
||||
}
|
||||
buts = b;
|
||||
|
||||
@@ -15,5 +15,7 @@ void archie_set_ar(char i);
|
||||
int archie_get_ar();
|
||||
void archie_set_amix(char i);
|
||||
int archie_get_amix();
|
||||
void archie_set_mswap(char i);
|
||||
int archie_get_mswap();
|
||||
|
||||
#endif // ARCHIE_H
|
||||
|
||||
Reference in New Issue
Block a user