summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/keyboard.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/keyboard.h')
-rw-r--r--src/devices/machine/keyboard.h25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/devices/machine/keyboard.h b/src/devices/machine/keyboard.h
index 247560b3dbb..4788d51f33b 100644
--- a/src/devices/machine/keyboard.h
+++ b/src/devices/machine/keyboard.h
@@ -7,18 +7,6 @@
/***************************************************************************
- DEVICE CONFIGURATION MACROS
-***************************************************************************/
-
-#define KEYBOARDCB_PUT(cls, fnc) generic_keyboard_device::output_delegate((&cls::fnc), (#cls "::" #fnc), DEVICE_SELF, ((cls *)nullptr))
-#define KEYBOARDCB_DEVPUT(tag, cls, fnc) generic_keyboard_device::output_delegate((&cls::fnc), (#cls "::" #fnc), (tag), ((cls *)nullptr))
-
-#define MCFG_GENERIC_KEYBOARD_CB(cb) \
- downcast<generic_keyboard_device &>(*device).set_keyboard_callback((KEYBOARDCB_##cb));
-
-
-
-/***************************************************************************
DEVICE TYPE GLOBALS
***************************************************************************/
@@ -91,7 +79,18 @@ public:
device_t *owner,
u32 clock);
- template <class Object> void set_keyboard_callback(Object &&cb) { m_keyboard_cb = std::forward<Object>(cb); }
+ template <class FunctionClass>
+ void set_keyboard_callback(void (FunctionClass::*callback)(u8 character), const char *name)
+ {
+ set_keyboard_callback(output_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
+ // FIXME: this should be aware of current device for resolving the tag
+ template <class FunctionClass>
+ void set_keyboard_callback(const char *devname, void (FunctionClass::*callback)(u8 character), const char *name)
+ {
+ set_keyboard_callback(output_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+ void set_keyboard_callback(output_delegate callback) { m_keyboard_cb = callback; }
virtual ioport_constructor device_input_ports() const override;