Previous 199869 Revisions Next

r30699 Wednesday 28th May, 2014 at 12:20:03 UTC by Robbbert
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.
[src/emu/machine]keyboard.c keyboard.h

trunk/src/emu/machine/keyboard.c
r30698r30699
1717WRITE8_MEMBER( xxx_state::kbd_put )
1818{
1919    (code to capture the key as it is pressed)
20    (if your machine uses function keys, add your conversion code here)
2021}
2122
2223***************************************************************************/
r30698r30699
3839   m_io_kbd5(*this, "TERM_LINE5"),
3940   m_io_kbd6(*this, "TERM_LINE6"),
4041   m_io_kbd7(*this, "TERM_LINE7"),
42   m_io_kbd8(*this, "TERM_LINE8"),
43   m_io_kbd9(*this, "TERM_LINE9"),
4144   m_io_kbdc(*this, "TERM_LINEC"),
4245   m_keyboard_cb(*this)
4346{
r30698r30699
5356   m_io_kbd5(*this, "TERM_LINE5"),
5457   m_io_kbd6(*this, "TERM_LINE6"),
5558   m_io_kbd7(*this, "TERM_LINE7"),
59   m_io_kbd8(*this, "TERM_LINE8"),
60   m_io_kbd9(*this, "TERM_LINE9"),
5661   m_io_kbdc(*this, "TERM_LINEC"),
5762   m_keyboard_cb(*this)
5863{
r30698r30699
98103      if (i == 6) code = m_io_kbd6->read();
99104      else
100105      if (i == 7) code = m_io_kbd7->read();
106      else
107      if (i == 8) code = m_io_kbd8->read();
108      else
109      if (i == 9) code = m_io_kbd9->read();
101110
102111      if (code != 0)
103112      {
r30698r30699
174183               case 1: key_code = 0x08; break; // Backspace
175184            }
176185         }
186         else
187         if (i==8)
188         {
189            key_code = row_number(code)+0x81;
190            if (ctrl) key_code+=0x10;
191            if (shift) key_code+=0x20;
192         }
193         else
194         if (i==9)
195         {
196            key_code = row_number(code)+0x89;
197            if (ctrl) key_code+=0x10;
198            if (shift) key_code+=0x20;
199         }
200
177201         retVal = key_code;
178      } else {
202      }
203      else
204      {
179205         *scan_line += 1;
180         if (*scan_line==8) {
206         if (*scan_line==10)
181207            *scan_line = 0;
182         }
183208      }
184209   }
185210   return retVal;
r30698r30699
340365   PORT_START("TERM_LINE7")
341366   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Escape") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
342367   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
368
369   PORT_START("TERM_LINE8")
370   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F1") PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
371   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F2") PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
372   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F3") PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
373   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
374   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F5") PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
375   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F6") PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
376   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F7") PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
377   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F8") PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8))
378
379   PORT_START("TERM_LINE9")
380   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F9") PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
381   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F10") PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))
382   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F11") PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11))
383   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F12") PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12))
343384INPUT_PORTS_END
344385
345386ioport_constructor generic_keyboard_device::device_input_ports() const
trunk/src/emu/machine/keyboard.h
r30698r30699
3535   required_ioport m_io_kbd5;
3636   required_ioport m_io_kbd6;
3737   required_ioport m_io_kbd7;
38   required_ioport m_io_kbd8;
39   required_ioport m_io_kbd9;
3840   required_ioport m_io_kbdc;
3941
4042   virtual void device_start();

Previous 199869 Revisions Next


© 1997-2024 The MAME Team