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 #if defined(_FM77AV_VARIANTS)
25 class KEYBOARD : public DEVICE {
27 uint8_t get_keycode_high(void);
28 uint8_t get_keycode_low(void);
29 void turn_on_ins_led(void);
30 void turn_off_ins_led(void);
32 #if defined(_FM77AV_VARIANTS)
54 uint8_t read_data_reg(void);
55 uint8_t read_stat_reg(void);
61 uint8_t autokey_backup;
62 uint8_t repeat_keycode;
66 bool override_break_key;
68 #if defined(_FM77AV_VARIANTS)
69 dll_cur_time_t cur_time;
74 uint8_t rtc_dayofweek;
90 bool did_hidden_message_av_1;
96 uint16_t vk2scancode(uint32_t vk);
97 bool isModifier(uint8_t sc);
98 void set_modifiers(uint8_t sc, bool flag);
99 uint16_t scan2fmkeycode(uint8_t sc);
100 void do_repeatkey(uint8_t sc);
101 void reset_unchange_mode(void);
102 void key_down_main(bool repeat_auto_key);
103 void key_up_main(uint8_t bak_scancode);
105 #if defined(_FM77AV_VARIANTS)
110 void set_repeat_type(void);
111 void set_repeat_time(void);
114 void rtc_count(void);
115 void adjust_rtc(void);
116 void do_digitize(void) {};
117 void set_screen_mode(void) {};
118 void get_screen_mode(void) {};
119 void set_brightness(void) {};
122 int repeat_time_short;
123 int repeat_time_long;
126 KEYBOARD(VM_TEMPLATE* parent_vm, EMU *parent_emu);
129 void key_up(uint32_t vk);
130 void key_down(uint32_t vk);
131 bool get_caps_locked()
135 bool get_kana_locked()
139 void event_callback(int event_id, int err);
140 void write_signal(int id, uint32_t data, uint32_t mask);
141 uint32_t read_signal(int id);
143 uint32_t read_data8(uint32_t addr);
144 void write_data8(uint32_t addr, uint32_t data);
147 bool decl_state(FILEIO *state_fio, bool loading);
148 void save_state(FILEIO *f);
149 bool load_state(FILEIO *f);
150 void set_context_rxrdy(DEVICE *p, int id, uint32_t mask) {
151 #if defined(_FM77AV_VARIANTS)
152 register_output_signal(&rxrdy, p, id, mask);
155 void set_context_key_ack(DEVICE *p, int id, uint32_t mask) {
156 #if defined(_FM77AV_VARIANTS)
157 register_output_signal(&key_ack, p, id, mask);
160 void set_context_break_line(DEVICE *p, int id, uint32_t mask) {
161 register_output_signal(&break_line, p, id, mask);
163 void set_context_int_line(DEVICE *p, int id, uint32_t mask) {
164 register_output_signal(&int_line, p, id, mask);
166 #if defined(_FM77AV_VARIANTS)
167 void set_context_beep(DEVICE *p) {