summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/machine/keyboard.c
diff options
context:
space:
mode:
author Robbbert <robbbert@users.noreply.github.com>2014-05-28 12:20:03 +0000
committer Robbbert <robbbert@users.noreply.github.com>2014-05-28 12:20:03 +0000
commit18de9562f93b93921902a391ef475951bf414b70 (patch)
tree350781107b48cbe82c017fe4544c60ea13b3242f /src/emu/machine/keyboard.c
parent9192ed1d74599ae685de15afafe59b10538968fb (diff)
Generic keyboard / terminal: added function keys. Clean build needed.
Values are 0x81 to 0x8c (F1 to F12) If CTRL pressed, add 0x10 If SHIFT pressed, add 0x20 This gives 48 new keys for special terminal functions, etc.
Diffstat (limited to 'src/emu/machine/keyboard.c')
-rw-r--r--src/emu/machine/keyboard.c47
1 files changed, 44 insertions, 3 deletions
diff --git a/src/emu/machine/keyboard.c b/src/emu/machine/keyboard.c
index da65b30f7ea..29271e817b7 100644
--- a/src/emu/machine/keyboard.c
+++ b/src/emu/machine/keyboard.c
@@ -17,6 +17,7 @@ In the code:
WRITE8_MEMBER( xxx_state::kbd_put )
{
(code to capture the key as it is pressed)
+ (if your machine uses function keys, add your conversion code here)
}
***************************************************************************/
@@ -38,6 +39,8 @@ generic_keyboard_device::generic_keyboard_device(const machine_config &mconfig,
m_io_kbd5(*this, "TERM_LINE5"),
m_io_kbd6(*this, "TERM_LINE6"),
m_io_kbd7(*this, "TERM_LINE7"),
+ m_io_kbd8(*this, "TERM_LINE8"),
+ m_io_kbd9(*this, "TERM_LINE9"),
m_io_kbdc(*this, "TERM_LINEC"),
m_keyboard_cb(*this)
{
@@ -53,6 +56,8 @@ generic_keyboard_device::generic_keyboard_device(const machine_config &mconfig,
m_io_kbd5(*this, "TERM_LINE5"),
m_io_kbd6(*this, "TERM_LINE6"),
m_io_kbd7(*this, "TERM_LINE7"),
+ m_io_kbd8(*this, "TERM_LINE8"),
+ m_io_kbd9(*this, "TERM_LINE9"),
m_io_kbdc(*this, "TERM_LINEC"),
m_keyboard_cb(*this)
{
@@ -98,6 +103,10 @@ UINT8 generic_keyboard_device::keyboard_handler(UINT8 last_code, UINT8 *scan_lin
if (i == 6) code = m_io_kbd6->read();
else
if (i == 7) code = m_io_kbd7->read();
+ else
+ if (i == 8) code = m_io_kbd8->read();
+ else
+ if (i == 9) code = m_io_kbd9->read();
if (code != 0)
{
@@ -174,12 +183,28 @@ UINT8 generic_keyboard_device::keyboard_handler(UINT8 last_code, UINT8 *scan_lin
case 1: key_code = 0x08; break; // Backspace
}
}
+ else
+ if (i==8)
+ {
+ key_code = row_number(code)+0x81;
+ if (ctrl) key_code+=0x10;
+ if (shift) key_code+=0x20;
+ }
+ else
+ if (i==9)
+ {
+ key_code = row_number(code)+0x89;
+ if (ctrl) key_code+=0x10;
+ if (shift) key_code+=0x20;
+ }
+
retVal = key_code;
- } else {
+ }
+ else
+ {
*scan_line += 1;
- if (*scan_line==8) {
+ if (*scan_line==10)
*scan_line = 0;
- }
}
}
return retVal;
@@ -340,6 +365,22 @@ INPUT_PORTS_START( generic_keyboard )
PORT_START("TERM_LINE7")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Escape") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
+
+ PORT_START("TERM_LINE8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F1") PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F2") PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F3") PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F5") PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F6") PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F7") PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F8") PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8))
+
+ PORT_START("TERM_LINE9")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F9") PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F10") PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F11") PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11))
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F12") PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12))
INPUT_PORTS_END
ioport_constructor generic_keyboard_device::device_input_ports() const