gamebloke/src/physicalkeyboard.h

82 lines
1.8 KiB
C++

#ifndef __PHYSICALKEYBOARD_H
#define __PHYSICALKEYBOARD_H
#include <stdint.h>
#include "vmkeyboard.h"
#define ESC 0x1B
#define DEL 0x7F
#define RET 0x0D
#define TAB 0x09
#define LARR 0x08 // control-H
#define RARR 0x15 // control-U
#define DARR 0x0A
#define UARR 0x0B
// Virtual keys
#define _CTRL 0x81
#define LSHFT 0x82
#define RSHFT 0x83
#define LOCK 0x84 // caps lock
#define LA 0x85 // left (open) apple, aka paddle0 button
#define RA 0x86 // right (closed) apple aka paddle1 button
#define SYSRQ 0x87
//Panel keys
#define LJOY 0x88
#define RJOY 0x89
#define UJOY 0x8A
#define DJOY 0x8B
#define BUT1 0x8C
#define BUT2 0x8D
#define JOYKEY 0x8E
#define NOTEKEY 0x8F
#define LWHTKEY 0x90
#define UKEY 0x91
#define RWHTKEY 0x92
#define ENTKEY 0x93
#define LKEY 0x94
#define DKEY 0x95
#define RKEY 0x96
//Special keys
#define JOY2 0x97
//USB modifiers
#define USB_LEFT_CTRL 0x01
#define USB_LEFT_SHIFT 0x02
#define USB_LEFT_ALT 0x04
#define USB_LEFT_GUI 0x08
#define USB_RIGHT_CTRL 0x10
#define USB_RIGHT_SHIFT 0x20
#define USB_RIGHT_ALT 0x40
#define USB_RIGHT_GUI 0x80
#define JOY_MODE_ANA_ABS 0
#define JOY_MODE_ANA_REL 1
#define JOY_MODE_JOYPORT1 2
#define JOY_MODE_JOYPORT2 3
class PhysicalKeyboard {
public:
PhysicalKeyboard(VMKeyboard *k) { this->vmkeyboard = k; }
virtual ~PhysicalKeyboard() {};
virtual void maintainKeyboard() = 0;
virtual bool kbhit() = 0;
virtual uint8_t read() = 0;
//Key joystick
virtual void startReading() = 0;
virtual uint8_t getMapping(uint8_t key) = 0;
virtual void setMapping(uint8_t key, uint8_t val) = 0;
virtual void setJoymode(uint8_t mode) = 0;
virtual void setAnnunciators() = 0;
virtual void setCaps(bool enabled) = 0;
protected:
VMKeyboard *vmkeyboard;
};
#endif