1
0
mirror of https://github.com/jscrane/r65emu.git synced 2025-02-08 22:30:40 +00:00
r65emu/ps2_serial_kbd.cpp
Stephen Crane 4fa4faa278
Keyboards (#26)
* ps/2 and hardware serial keyboards

* serial keyboard

* add ps2_kbd shim

* hardware_run() and hardware_debug_cpu()

* ...

* ...

* updates

* refactoring

* refactoring

* run instructions
2024-08-22 15:58:45 +01:00

41 lines
761 B
C++

#include <Arduino.h>
#include "hardware.h"
#if defined(PS2_SERIAL_KBD)
#include <PS2KeyAdvanced.h>
#include <PS2KeyMap.h>
#include "serial_kbd.h"
#include "ps2_serial_kbd.h"
PS2KeyAdvanced keyboard;
PS2KeyMap keymap;
void ps2_serial_kbd::reset() {
keyboard.begin(PS2_KBD_DATA, PS2_KBD_IRQ);
keyboard.setNoBreak(1);
keymap.selectMap(PS2_SERIAL_KBD);
}
bool ps2_serial_kbd::available() {
return keyboard.available();
}
int ps2_serial_kbd::read() {
if (!keyboard.available())
return -1;
uint16_t key = keyboard.read();
if (key & PS2_FUNCTION) {
uint8_t k = key & 0xff;
if ((k >= PS2_KEY_F1) && (k <= PS2_KEY_F12)) {
fnkey(k - 0x60);
return -1;
}
}
uint16_t code = keymap.remapKey(key);
return code == 0? -1: (code & 0xff);
}
#endif