--- /dev/null
+
+AKS(ENTERGUI)
+AKS(SCREENSHOT_FILE)
+AKS(SCREENSHOT_CLIPBOARD)
+AKS(FREEZEBUTTON)
+AKS(FLOPPY0)
+AKS(FLOPPY1)
+AKS(FLOPPY2)
+AKS(FLOPPY3)
+AKS(EFLOPPY0)
+AKS(EFLOPPY1)
+AKS(EFLOPPY2)
+AKS(EFLOPPY3)
+AKS(TOGGLEDEFAULTSCREEN)
+AKS(TOGGLEWINDOWEDFULLSCREEN)
+AKS(TOGGLEFULLWINDOWFULLSCREEN)
+AKS(TOGGLEWINDOWFULLWINDOW)
+AKS(ENTERDEBUGGER)
+AKS(IRQ7)
+AKS(PAUSE)
+AKS(SINGLESTEP)
+AKS(WARP)
+AKS(INHIBITSCREEN)
+AKS(STATEREWIND)
+AKS(STATECURRENT)
+AKS(STATECAPTURE)
+AKS(VIDEORECORD)
+AKS(VOLDOWN)
+AKS(VOLUP)
+AKS(VOLMUTE)
+AKS(MVOLDOWN)
+AKS(MVOLUP)
+AKS(MVOLMUTE)
+AKS(QUIT)
+AKS(HARDRESET)
+AKS(SOFTRESET)
+AKS(STATESAVEQUICK)
+AKS(STATERESTOREQUICK)
+AKS(STATESAVEQUICK1)
+AKS(STATERESTOREQUICK1)
+AKS(STATESAVEQUICK2)
+AKS(STATERESTOREQUICK2)
+AKS(STATESAVEQUICK3)
+AKS(STATERESTOREQUICK3)
+AKS(STATESAVEQUICK4)
+AKS(STATERESTOREQUICK4)
+AKS(STATESAVEQUICK5)
+AKS(STATERESTOREQUICK5)
+AKS(STATESAVEQUICK6)
+AKS(STATERESTOREQUICK6)
+AKS(STATESAVEQUICK7)
+AKS(STATERESTOREQUICK7)
+AKS(STATESAVEQUICK8)
+AKS(STATERESTOREQUICK8)
+AKS(STATESAVEQUICK9)
+AKS(STATERESTOREQUICK9)
+AKS(STATESAVEDIALOG)
+AKS(STATERESTOREDIALOG)
+AKS(DECREASEREFRESHRATE)
+AKS(INCREASEREFRESHRATE)
+AKS(ARCADIADIAGNOSTICS)
+AKS(ARCADIAPLY1)
+AKS(ARCADIAPLY2)
+AKS(ARCADIACOIN1)
+AKS(ARCADIACOIN2)
+AKS(ALGSERVICE)
+AKS(ALGLSTART)
+AKS(ALGRSTART)
+AKS(ALGLCOIN)
+AKS(ALGRCOIN)
+AKS(ALGLTRIGGER)
+AKS(ALGRTRIGGER)
+AKS(ALGLHOLSTER)
+AKS(ALGRHOLSTER)
+AKS(TOGGLEMOUSEGRAB)
+AKS(SWITCHINTERPOL)
+AKS(INPUT_CONFIG_1)
+AKS(INPUT_CONFIG_2)
+AKS(INPUT_CONFIG_3)
+AKS(INPUT_CONFIG_4)
+AKS(SWAPJOYPORTS)
+AKS(PASTE)
+AKS(DISKSWAPPER_NEXT)
+AKS(DISKSWAPPER_PREV)
+AKS(DISKSWAPPER_INSERT0)
+AKS(DISKSWAPPER_INSERT1)
+AKS(DISKSWAPPER_INSERT2)
+AKS(DISKSWAPPER_INSERT3)
+AKS(DISK_PREV0)
+AKS(DISK_PREV1)
+AKS(DISK_PREV2)
+AKS(DISK_PREV3)
+AKS(DISK_NEXT0)
+AKS(DISK_NEXT1)
+AKS(DISK_NEXT2)
+AKS(DISK_NEXT3)
+AKS(RTG_PREV)
+AKS(RTG_NEXT)
+AKS(RTG_C)
+AKS(RTG_0)
+AKS(RTG_1)
+AKS(RTG_2)
+AKS(RTG_3)
+AKS(CDTV_FRONT_PANEL_STOP)
+AKS(CDTV_FRONT_PANEL_PLAYPAUSE)
+AKS(CDTV_FRONT_PANEL_PREV)
+AKS(CDTV_FRONT_PANEL_NEXT)
+AKS(CDTV_FRONT_PANEL_REW)
+AKS(CDTV_FRONT_PANEL_FF)
+AKS(VIDEOGRAB_RESTART)
+AKS(VIDEOGRAB_PAUSE)
+AKS(VIDEOGRAB_PREV)
+AKS(VIDEOGRAB_NEXT)
+AKS(QUALIFIER1)
+AKS(QUALIFIER2)
+AKS(QUALIFIER3)
+AKS(QUALIFIER4)
+AKS(QUALIFIER5)
+AKS(QUALIFIER6)
+AKS(QUALIFIER7)
+AKS(QUALIFIER8)
+AKS(QUALIFIER_SPECIAL)
+AKS(QUALIFIER_SHIFT)
+AKS(QUALIFIER_CONTROL)
+AKS(QUALIFIER_ALT)
+AKS(QUALIFIER_WIN)
+
extern void warpmode (int mode);
extern void pausemode (int mode);
-extern void inputdevice_add_inputcode (int code, int state);
+extern void inputdevice_add_inputcode (int code, int state, const TCHAR *);
extern void inputdevice_handle_inputcode (void);
extern void inputdevice_tablet (int x, int y, int z,
#define KBLED_CAPSLOCKM (1 << KBLED_CAPSLOCKB)
#define KBLED_SCROLLLOCKM (1 << KBLED_SCROLLLOCKB)
-enum aks { AKS_ENTERGUI = 0x200,
- AKS_SCREENSHOT_FILE,
- AKS_SCREENSHOT_CLIPBOARD,
- AKS_FREEZEBUTTON,
- AKS_FLOPPY0, AKS_FLOPPY1, AKS_FLOPPY2, AKS_FLOPPY3,
- AKS_EFLOPPY0, AKS_EFLOPPY1, AKS_EFLOPPY2, AKS_EFLOPPY3,
- AKS_TOGGLEDEFAULTSCREEN,
- AKS_TOGGLEWINDOWEDFULLSCREEN, AKS_TOGGLEFULLWINDOWFULLSCREEN, AKS_TOGGLEWINDOWFULLWINDOW,
- AKS_ENTERDEBUGGER, AKS_IRQ7,
- AKS_PAUSE, AKS_SINGLESTEP,
- AKS_WARP, AKS_INHIBITSCREEN,
- AKS_STATEREWIND, AKS_STATECURRENT, AKS_STATECAPTURE,
- AKS_VIDEORECORD,
- AKS_VOLDOWN, AKS_VOLUP, AKS_VOLMUTE,
- AKS_MVOLDOWN, AKS_MVOLUP, AKS_MVOLMUTE,
- AKS_QUIT, AKS_HARDRESET, AKS_SOFTRESET,
- AKS_STATESAVEQUICK, AKS_STATERESTOREQUICK,
- AKS_STATESAVEQUICK1, AKS_STATERESTOREQUICK1,
- AKS_STATESAVEQUICK2, AKS_STATERESTOREQUICK2,
- AKS_STATESAVEQUICK3, AKS_STATERESTOREQUICK3,
- AKS_STATESAVEQUICK4, AKS_STATERESTOREQUICK4,
- AKS_STATESAVEQUICK5, AKS_STATERESTOREQUICK5,
- AKS_STATESAVEQUICK6, AKS_STATERESTOREQUICK6,
- AKS_STATESAVEQUICK7, AKS_STATERESTOREQUICK7,
- AKS_STATESAVEQUICK8, AKS_STATERESTOREQUICK8,
- AKS_STATESAVEQUICK9, AKS_STATERESTOREQUICK9,
- AKS_STATESAVEDIALOG, AKS_STATERESTOREDIALOG,
- AKS_DECREASEREFRESHRATE,
- AKS_INCREASEREFRESHRATE,
-
- AKS_ARCADIADIAGNOSTICS, AKS_ARCADIAPLY1, AKS_ARCADIAPLY2, AKS_ARCADIACOIN1, AKS_ARCADIACOIN2,
- AKS_ALGSERVICE, AKS_ALGLSTART, AKS_ALGRSTART, AKS_ALGLCOIN, AKS_ALGRCOIN,
- AKS_ALGLTRIGGER, AKS_ALGRTRIGGER, AKS_ALGLHOLSTER, AKS_ALGRHOLSTER,
-
- AKS_TOGGLEMOUSEGRAB, AKS_SWITCHINTERPOL,
- AKS_INPUT_CONFIG_1,AKS_INPUT_CONFIG_2,AKS_INPUT_CONFIG_3,AKS_INPUT_CONFIG_4,
- AKS_SWAPJOYPORTS,
- AKS_PASTE,
- AKS_DISKSWAPPER_NEXT,AKS_DISKSWAPPER_PREV,
- AKS_DISKSWAPPER_INSERT0,AKS_DISKSWAPPER_INSERT1,AKS_DISKSWAPPER_INSERT2,AKS_DISKSWAPPER_INSERT3,
- AKS_DISK_PREV0, AKS_DISK_PREV1, AKS_DISK_PREV2, AKS_DISK_PREV3,
- AKS_DISK_NEXT0, AKS_DISK_NEXT1, AKS_DISK_NEXT2, AKS_DISK_NEXT3,
- AKS_RTG_PREV, AKS_RTG_NEXT,
- AKS_RTG_C, AKS_RTG_0, AKS_RTG_1, AKS_RTG_2, AKS_RTG_3,
- AKS_CDTV_FRONT_PANEL_STOP, AKS_CDTV_FRONT_PANEL_PLAYPAUSE, AKS_CDTV_FRONT_PANEL_PREV,
- AKS_CDTV_FRONT_PANEL_NEXT, AKS_CDTV_FRONT_PANEL_REW, AKS_CDTV_FRONT_PANEL_FF,
- AKS_VIDEOGRAB_RESTART, AKS_VIDEOGRAB_PAUSE, AKS_VIDEOGRAB_PREV, AKS_VIDEOGRAB_NEXT,
- AKS_QUALIFIER1, AKS_QUALIFIER2, AKS_QUALIFIER3, AKS_QUALIFIER4,
- AKS_QUALIFIER5, AKS_QUALIFIER6, AKS_QUALIFIER7, AKS_QUALIFIER8,
- AKS_QUALIFIER_SPECIAL, AKS_QUALIFIER_SHIFT, AKS_QUALIFIER_CONTROL,
- AKS_QUALIFIER_ALT, AKS_QUALIFIER_WIN
+#define AKS(A) AKS_ ## A,
+enum aks {
+ AKS_START = 0x1ff,
+#include "../aks.def"
};
+#undef AKS
#define AKS_FIRST AKS_ENTERGUI
};
#undef DEFEVENT
#undef DEFEVENT2
+struct aksevent
+{
+ int aks;
+ const TCHAR *name;
+};
+#define AKS(A) { AKS_ ## A, _T("AKS_") _T(#A) },
+static const struct aksevent akss[] = {
+#include "aks.def"
+ { 0, NULL }
+};
static int sublevdir[2][MAX_INPUT_SUB_EVENT];
int inputdevice_uaelib (const TCHAR *s, const TCHAR *parm)
{
- int i;
-
//write_log(_T("%s: %s\n"), s, parm);
if (!_tcsncmp(s, _T("KEY_RAW_"), 8)) {
if (value[0] == '0' && _totupper(value[1]) == 'X')
value += 2, base = 16;
v = _tcstol(value, &endptr, base);
- for (i = 1; events[i].name; i++) {
+ for (int i = 1; events[i].name; i++) {
const struct inputevent *ie = &events[i];
if (_tcsncmp(ie->confname, _T("KEY_"), 4))
continue;
return 0;
}
- for (i = 1; events[i].name; i++) {
+ if (!_tcsncmp(s, _T("AKS_"), 4)) {
+ for (int i = 0; akss[i].name; i++) {
+ if (!_tcscmp(s, akss[i].name)) {
+ int v = _tstol(parm);
+ if (!_tcscmp(parm, _T("0")) || !_tcscmp(parm, _T("1")))
+ parm = NULL;
+ else
+ v = 1;
+ inputdevice_add_inputcode(akss[i].aks, v, parm);
+ return 1;
+ }
+ }
+ }
+
+ for (int i = 1; events[i].name; i++) {
if (!_tcscmp (s, events[i].confname)) {
check_enable(i);
handle_input_event (i, parm ? _tstol (parm) : 0, 1, 0);
static uae_u8 keybuf[256];
#define MAX_PENDING_EVENTS 20
-static int inputcode_pending[MAX_PENDING_EVENTS], inputcode_pending_state[MAX_PENDING_EVENTS];
+struct inputcode
+{
+ int code;
+ int state;
+ TCHAR *s;
+};
+static struct inputcode inputcode_pending[MAX_PENDING_EVENTS];
static bool inputdevice_handle_inputcode_immediate(int code, int state)
{
}
-void inputdevice_add_inputcode (int code, int state)
+void inputdevice_add_inputcode (int code, int state, const TCHAR *s)
{
for (int i = 0; i < MAX_PENDING_EVENTS; i++) {
- if (inputcode_pending[i] == code && inputcode_pending_state[i] == state)
+ if (inputcode_pending[i].code == code && inputcode_pending[i].state == state)
return;
}
for (int i = 0; i < MAX_PENDING_EVENTS; i++) {
- if (inputcode_pending[i] == 0) {
+ if (inputcode_pending[i].code == 0) {
if (!inputdevice_handle_inputcode_immediate(code, state)) {
- inputcode_pending[i] = code;
- inputcode_pending_state[i] = state;
+ inputcode_pending[i].code = code;
+ inputcode_pending[i].state = state;
+ inputcode_pending[i].s = my_strdup(s);
}
return;
}
}
return;
}
- inputdevice_add_inputcode (code, state);
+ inputdevice_add_inputcode (code, state, NULL);
}
// these need cpu trace data
void target_paste_to_keyboard(void);
-static bool inputdevice_handle_inputcode2 (int code, int state)
+static bool inputdevice_handle_inputcode2 (int code, int state, const TCHAR *s)
{
static int swapperslot;
static int tracer_enable;
int newstate;
+ if (s != NULL && s[0] == 0)
+ s = NULL;
+
if (code == 0)
goto end;
if (needcputrace (code) && can_cpu_tracer () == true && is_cpu_tracer () == false && !input_play && !input_record && !debugging) {
break;
#endif
case AKS_FLOPPY0:
- gui_display (0);
- setsystime ();
+ if (s) {
+ _tcsncpy(changed_prefs.floppyslots[0].df, s, MAX_PATH);
+ changed_prefs.floppyslots[0].df[MAX_PATH - 1] = 0;
+ set_config_changed();
+ } else {
+ gui_display (0);
+ setsystime ();
+ }
break;
case AKS_FLOPPY1:
- gui_display (1);
- setsystime ();
+ if (s) {
+ _tcsncpy(changed_prefs.floppyslots[1].df, s, MAX_PATH);
+ changed_prefs.floppyslots[1].df[MAX_PATH - 1] = 0;
+ set_config_changed();
+ } else {
+ gui_display (1);
+ setsystime ();
+ }
break;
case AKS_FLOPPY2:
- gui_display (2);
- setsystime ();
+ if (s) {
+ _tcsncpy(changed_prefs.floppyslots[2].df, s, MAX_PATH);
+ changed_prefs.floppyslots[2].df[MAX_PATH - 1] = 0;
+ set_config_changed();
+ } else {
+ gui_display (2);
+ setsystime ();
+ }
break;
case AKS_FLOPPY3:
- gui_display (3);
- setsystime ();
+ if (s) {
+ _tcsncpy(changed_prefs.floppyslots[3].df, s, MAX_PATH);
+ changed_prefs.floppyslots[3].df[MAX_PATH - 1] = 0;
+ set_config_changed();
+ } else {
+ gui_display (3);
+ setsystime ();
+ }
break;
case AKS_EFLOPPY0:
disk_eject (0);
activate_debugger ();
break;
case AKS_STATESAVEDIALOG:
- gui_display (5);
+ if (s) {
+ savestate_initsave (s, 1, true, true);
+ save_state (savestate_fname, _T("Description!"));
+ } else {
+ gui_display (5);
+ }
break;
case AKS_STATERESTOREDIALOG:
- gui_display (4);
+ if (s) {
+ savestate_initsave (s, 1, true, false);
+ savestate_state = STATE_DORESTORE;
+ } else {
+ gui_display (4);
+ }
break;
case AKS_DECREASEREFRESHRATE:
case AKS_INCREASEREFRESHRATE:
{
bool got = false;
for (int i = 0; i < MAX_PENDING_EVENTS; i++) {
- int code = inputcode_pending[i];
- int state = inputcode_pending_state[i];
+ int code = inputcode_pending[i].code;
+ int state = inputcode_pending[i].state;
+ const TCHAR *s = inputcode_pending[i].s;
if (code) {
- if (!inputdevice_handle_inputcode2 (code, state))
- inputcode_pending[i] = 0;
+ if (!inputdevice_handle_inputcode2 (code, state, s)) {
+ xfree(inputcode_pending[i].s);
+ inputcode_pending[i].code = 0;
+ }
got = true;
}
}
if (!got)
- inputdevice_handle_inputcode2 (0, 0);
+ inputdevice_handle_inputcode2 (0, 0, NULL);
}
}
if (num == num_keyboard) {
if (!istest && scancode == DIK_F12 && pressed && isfocus ())
- inputdevice_add_inputcode (AKS_ENTERGUI, 1);
+ inputdevice_add_inputcode (AKS_ENTERGUI, 1, NULL);
return;
}
}
if (scancode_new == defaultguikey && currprefs.win32_guikey != scancode_new) {
scancode = 0;
if (specialpressed () && ctrlpressed() && shiftpressed() && altpressed ())
- inputdevice_add_inputcode (AKS_ENTERGUI, 1);
+ inputdevice_add_inputcode (AKS_ENTERGUI, 1, NULL);
} else if (scancode_new == currprefs.win32_guikey ) {
- inputdevice_add_inputcode (AKS_ENTERGUI, 1);
+ inputdevice_add_inputcode (AKS_ENTERGUI, 1, NULL);
scancode = 0;
}
} else if (!specialpressed () && !ctrlpressed() && !shiftpressed() && !altpressed () && scancode_new == defaultguikey) {
- inputdevice_add_inputcode (AKS_ENTERGUI, 1);
+ inputdevice_add_inputcode (AKS_ENTERGUI, 1, NULL);
scancode = 0;
}
}
}
if (code) {
- inputdevice_add_inputcode (code, 1);
+ inputdevice_add_inputcode (code, 1, NULL);
return true;
}