diff options
Diffstat (limited to 'src/devices/machine/keyboard.h')
-rw-r--r-- | src/devices/machine/keyboard.h | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/devices/machine/keyboard.h b/src/devices/machine/keyboard.h index 4788d51f33b..7741c7cf398 100644 --- a/src/devices/machine/keyboard.h +++ b/src/devices/machine/keyboard.h @@ -78,21 +78,15 @@ public: const char *tag, device_t *owner, u32 clock); + virtual ~generic_keyboard_device(); - 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) + template <typename... T> + void set_keyboard_callback(T &&... args) { - set_keyboard_callback(output_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); + m_keyboard_cb.set(std::forward<T>(args)...); } - void set_keyboard_callback(output_delegate callback) { m_keyboard_cb = callback; } - virtual ioport_constructor device_input_ports() const override; + virtual ioport_constructor device_input_ports() const override ATTR_COLD; protected: generic_keyboard_device( @@ -101,8 +95,8 @@ protected: char const *tag, device_t *owner, u32 clock); - virtual void device_start() override; - virtual void device_reset() override; + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; virtual void key_make(u8 row, u8 column) override; virtual void key_repeat(u8 row, u8 column) override; virtual void send_key(u8 code); |