2 * FM-7 Keyboard [fm7_keyboard.h]
4 * Author: K.Ohta <whatisthis.sowhat _at_ gmail.com>
7 * Mar 11, 2015 : Initial
11 #ifndef _VM_FM7_KEYBOARD_H_
12 #define _VM_FM7_KEYBOARD_H_
14 #include "../device.h"
15 #include "../memory.h"
16 #include "../../fileio.h"
18 #include "fm7_common.h"
20 # include "qt_input.h"
23 #if defined(_FM77AV_VARIANTS)
26 class KEYBOARD : public DEVICE {
30 uint8 get_keycode_high(void);
31 uint8 get_keycode_low(void);
32 void turn_on_ins_led(void);
33 void turn_off_ins_led(void);
38 #if defined(_FM77AV_VARIANTS)
56 uint8 read_data_reg(void);
57 uint8 read_stat_reg(void);
62 bool key_pressed_flag[0x70];
67 #if defined(_FM77AV_VARIANTS)
89 bool did_hidden_message_av_1;
94 uint16 vk2scancode(uint32 vk);
95 bool isModifier(uint16 scancode);
96 void set_modifiers(uint16 scancode, bool flag);
97 uint16 scan2fmkeycode(uint16 scancode);
98 void do_repeatkey(uint16 scancode);
99 void reset_unchange_mode(void);
100 void key_down_main(void);
102 #if defined(_FM77AV_VARIANTS)
107 void set_repeat_type(void);
108 void set_repeat_time(void);
111 void rtc_count(void);
112 void adjust_rtc(void);
113 void do_digitize(void) {};
114 void set_screen_mode(void) {};
115 void get_screen_mode(void) {};
116 void set_brightness(void) {};
119 int repeat_time_short;
120 int repeat_time_long;
123 KEYBOARD(VM *parent_vm, EMU *parent_emu);
126 void key_up(uint32 vk);
127 void key_down(uint32 vk);
128 void event_callback(int event_id, int err);
129 void write_signal(int id, uint32 data, uint32 mask);
130 uint32 read_signal(int id);
132 uint32 read_data8(uint32 addr);
133 void write_data8(uint32 addr, uint32 data);
136 void save_state(FILEIO *f);
137 bool load_state(FILEIO *f);
139 void set_context_rxrdy(DEVICE *p, int id, uint32 mask) {
140 #if defined(_FM77AV_VARIANTS)
141 register_output_signal(&rxrdy, p, id, mask);
144 void set_context_key_ack(DEVICE *p, int id, uint32 mask) {
145 #if defined(_FM77AV_VARIANTS)
146 register_output_signal(&key_ack, p, id, mask);
149 void set_context_caps_led(DEVICE *p, int id, uint32 mask) {
150 register_output_signal(&caps_led, p, id, mask);
152 void set_context_kana_led(DEVICE *p, int id, uint32 mask) {
153 register_output_signal(&kana_led, p, id, mask);
155 void set_context_ins_led(DEVICE *p, int id, uint32 mask) {
156 register_output_signal(&ins_led, p, id, mask);
158 void set_context_break_line(DEVICE *p, int id, uint32 mask) {
159 register_output_signal(&break_line, p, id, mask);
161 void set_context_int_line(DEVICE *p, int id, uint32 mask) {
162 register_output_signal(&int_line, p, id, mask);
164 #if defined(_FM77AV_VARIANTS)
165 void set_context_beep(DEVICE *p) {