1 // license: GPL-2.0+
2 // copyright-holders: Dirk Best
3 /***************************************************************************
4 
5     PSI HLE ASCII Keyboard
6 
7 ***************************************************************************/
8 
9 #ifndef MAME_BUS_PSI_KBD_HLE_H
10 #define MAME_BUS_PSI_KBD_HLE_H
11 
12 #pragma once
13 
14 #include "psi_kbd.h"
15 #include "machine/keyboard.h"
16 
17 
18 //**************************************************************************
19 //  TYPE DEFINITIONS
20 //**************************************************************************
21 
22 // ======================> psi_hle_keyboard_device
23 
24 class psi_hle_keyboard_device : public device_t,
25 								public device_psi_keyboard_interface,
26 								protected device_matrix_keyboard_interface<7>
27 {
28 public:
29 	// construction/destruction
30 	psi_hle_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
31 
32 protected:
33 	// device_t overrides
34 	virtual ioport_constructor device_input_ports() const override;
35 	virtual void device_start() override;
36 	virtual void device_reset() override;
37 
38 	// device_matrix_keyboard_interface overrides
39 	virtual void key_make(uint8_t row, uint8_t column) override;
40 	virtual void key_break(uint8_t row, uint8_t column) override;
41 	virtual void key_repeat(uint8_t row, uint8_t column) override;
42 
43 private:
44 	uint8_t translate(uint8_t row, uint8_t column);
45 	void send_key(uint8_t code);
46 	required_ioport m_modifiers;
47 };
48 
49 
50 // device type definition
51 DECLARE_DEVICE_TYPE(PSI_HLE_KEYBOARD, psi_hle_keyboard_device)
52 
53 
54 #endif // MAME_BUS_PSI_KBD_HLE_H
55