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.h20
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);