config.dipswitch = config.dipswitch | (FM7_DIPSW_SELECT_5_OR_8KEY | FM7_DIPSW_AUTO_5_OR_8KEY);
break;
case 2: // Auto 8
- config.dipswitch = (config.dipswitch | FM7_DIPSW_AUTO_5_OR_8KEY) & ~FM7_DIPSW_AUTO_5_OR_8KEY;
+ config.dipswitch = (config.dipswitch | FM7_DIPSW_AUTO_5_OR_8KEY) & ~FM7_DIPSW_SELECT_5_OR_8KEY;
break;
default:// Not Auto Key:
config.dipswitch = config.dipswitch & ~(FM7_DIPSW_SELECT_5_OR_8KEY | FM7_DIPSW_AUTO_5_OR_8KEY);
#if defined(_FM8) || defined(_FM7) || defined(_FMNEW7) || defined(_FM77_VARIANTS)
action_1MFloppy->setText(QApplication::translate("MainWindow", "Connect 1MB FDD(Need Restart)", 0));
#endif
- menuAuto5_8Key->setTitle(QApplication::translate("MainWindow", "Auto Stop Ten Key (HACK)", 0));
+ menuAuto5_8Key->setTitle(QApplication::translate("MainWindow", "Auto Stop Ten Key (hack)", 0));
action_Neither_5_or_8key->setText(QApplication::translate("MainWindow", "None used.", 0));
action_Auto_5key->setText(QApplication::translate("MainWindow", "Use 5", 0));
action_Auto_8key->setText(QApplication::translate("MainWindow", "Use 8", 0));
ID_KEYBOARD_HIDDENMESSAGE_AV,
ID_KEYBOARD_HIDDEN_BEEP_ON,
ID_KEYBOARD_HIDDEN_BEEP_OFF,
+ ID_KEYBOARD_AUTO_8KEY_START,
+ ID_KEYBOARD_AUTO_8KEY_END,
+ ID_KEYBOARD_AUTO_5KEY_START,
+ ID_KEYBOARD_AUTO_5KEY_END,
};
//
return retval;
}
-void KEYBOARD::key_up(uint32_t vk)
+void KEYBOARD::key_up_main(uint16_t bak_scancode)
{
- uint16_t bak_scancode = vk2scancode(vk);
bool stat_break = break_pressed;
older_vk = 0;
if(bak_scancode == 0) return;
this->write_signals(&break_line, 0x00);
}
}
+ if((config.dipswitch & FM7_DIPSW_AUTO_5_OR_8KEY) != 0) {
+ if((config.dipswitch & FM7_DIPSW_SELECT_5_OR_8KEY) == 0) { // Auto 8
+ switch(bak_scancode) {
+ case 0x42: // 1
+ case 0x43: // 2
+ case 0x44: // 3
+ case 0x3f: // 5
+ register_event(this,
+ ID_KEYBOARD_AUTO_8KEY_START,
+ 20.0 * 1000.0, false, NULL);
+ break;
+ }
+ } else { // Auto 5
+ switch(bak_scancode) {
+ case 0x42: // 1
+ case 0x43: // 2
+ case 0x44: // 3
+ case 0x3e: // 4
+ case 0x40: // 6
+ case 0x3a: // 7
+ case 0x3b: // 8
+ case 0x3c: // 9
+ register_event(this,
+ ID_KEYBOARD_AUTO_5KEY_START,
+ 20.0 * 1000.0, false, NULL);
+ break;
+ }
+ }
+ }
} else {
//scancode = 0;
if((keymode == KEYMODE_SCAN) && (bak_scancode != 0)) { // Notify even key-up, when using SCAN mode.
}
}
+void KEYBOARD::key_up(uint32_t vk)
+{
+ uint16_t bak_scancode = vk2scancode(vk);
+ key_up_main(bak_scancode);
+}
+
+
+
void KEYBOARD::key_down(uint32_t vk)
{
if(older_vk == vk) return;
keycode_7 = key_fifo->read();
this->write_signals(&int_line, 0xffffffff);
}
+ } else if(event_id == ID_KEYBOARD_AUTO_8KEY_START) {
+ if(keymode != KEYMODE_SCAN) {
+ scancode = 0x3b; // 8
+ key_down_main();
+ register_event(this,
+ ID_KEYBOARD_AUTO_8KEY_END,
+ 20.0 * 1000.0, false, NULL);
+ }
+ } else if(event_id == ID_KEYBOARD_AUTO_8KEY_END) {
+ key_up_main(0x3b); // 8
+ } else if(event_id == ID_KEYBOARD_AUTO_5KEY_START) {
+ if(keymode != KEYMODE_SCAN) {
+ scancode = 0x3f; // 5
+ key_down_main();
+ register_event(this,
+ ID_KEYBOARD_AUTO_5KEY_END,
+ 20.0 * 1000.0, false, NULL);
+ }
+ } else if(event_id == ID_KEYBOARD_AUTO_5KEY_END) {
+ key_up_main(0x3f); // 5
}
}