1
0
mirror of https://github.com/mist-devel/mist-firmware.git synced 2026-02-01 14:02:35 +00:00

Keyrah: FN+F3..F6 - mouse/joystick direct emulation selection. (F17..F20 - on other keyboards).

This commit is contained in:
sorgelig
2017-01-12 01:24:33 +08:00
parent 100d11e102
commit ef74c8ff6d
2 changed files with 42 additions and 15 deletions

View File

@@ -21,8 +21,8 @@
#define EXT 0x1000 // extended PS/2 keycode
// amiga unmapped:
// 0x5a KP-(
// 0x5b KP-)
// 0x5a KP-( (mapped on Keyrah)
// 0x5b KP-) (mapped on Keyrah)
// codes >= 0x69 are for OSD only and are not sent to the amiga itself
// keycode translation table
@@ -135,10 +135,10 @@ const unsigned short usb2ami[] = {
0x5b, // 69: KP )
MISS, // 6a: F15
MISS, // 6b: F16
MISS, // 6c: F17
MISS, // 6d: F18
MISS, // 6e: F19
MISS // 6f: F20
NUM_LOCK_TOGGLE | 1, // 6c: F17
NUM_LOCK_TOGGLE | 2, // 6d: F18
NUM_LOCK_TOGGLE | 3, // 6e: F19
NUM_LOCK_TOGGLE | 4 // 6f: F20
};
// unmapped atari keys:
@@ -255,10 +255,10 @@ const unsigned short usb2atari[] = {
MISS, // 69: F14
MISS, // 6a: F15
MISS, // 6b: F16
MISS, // 6c: F17
MISS, // 6d: F18
MISS, // 6e: F19
MISS // 6f: F20
NUM_LOCK_TOGGLE | 1, // 6c: F17
NUM_LOCK_TOGGLE | 2, // 6d: F18
NUM_LOCK_TOGGLE | 3, // 6e: F19
NUM_LOCK_TOGGLE | 4 // 6f: F20
};
// keycode translation table for ps2 emulation
@@ -371,10 +371,10 @@ const unsigned short usb2ps2[] = {
0x7e, // 69: Scroll Lock
0x18, // 6a: F15
0x20, // 6b: F16
0x28, // 6c: F17
0x30, // 6d: F18
0x38, // 6e: F19
0x40 // 6f: F20
NUM_LOCK_TOGGLE | 1, // 6c: F17
NUM_LOCK_TOGGLE | 2, // 6d: F18
NUM_LOCK_TOGGLE | 3, // 6e: F19
NUM_LOCK_TOGGLE | 4 // 6f: F20
};
// Archimedes unmapped keys

View File

@@ -1549,6 +1549,11 @@ static char kr_fn_table[] =
0x3a, 0x44, // f11
0x3b, 0x45, // f12
0x3c, 0x6c, // EMU_MOUSE
0x3d, 0x6d, // EMU_JOY0
0x3e, 0x6e, // EMU_JOY1
0x3f, 0x6f, // EMU_NONE
//Emulate keypad for A600
0x1E, 0x59, //KP1
0x1F, 0x5A, //KP2
@@ -1899,7 +1904,29 @@ void user_io_kbd(unsigned char m, unsigned char *k, uint8_t priority, unsigned s
if(emu_mode == EMU_MOUSE) emu_timer = GetTimer(EMU_MOUSE_FREQ);
emu_mode = (emu_mode+1)&3;
switch(code ^ NUM_LOCK_TOGGLE)
{
case 1:
emu_mode = EMU_MOUSE;
break;
case 2:
emu_mode = EMU_JOY0;
break;
case 3:
emu_mode = EMU_JOY1;
break;
case 4:
emu_mode = EMU_NONE;
break;
default:
emu_mode = (emu_mode+1)&3;
break;
}
if(emu_mode == EMU_MOUSE || emu_mode == EMU_JOY0) set_kbd_led(HID_LED_NUM_LOCK, true);
else set_kbd_led(HID_LED_NUM_LOCK, false);