Archie: option to swap mouse buttons 2/3.

This commit is contained in:
sorgelig
2019-03-04 18:43:13 +08:00
parent 21241e3150
commit 02f0a802d5
3 changed files with 30 additions and 8 deletions

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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