diff options
| author | 2016-10-20 17:13:04 -0400 | |
|---|---|---|
| committer | 2016-10-20 17:58:03 -0400 | |
| commit | 6d2d6bfa0d010c1de8a46b74821fc2633b5e1e9e (patch) | |
| tree | fd15928aefacb06e2ec5ac89ff20e22f10d06b4d /src/emu/natkeyboard.cpp | |
| parent | 93b37d2d786ed352f13ccd3c8f96c5c6cd94e2eb (diff) | |
Lock out ioport_fields independently of natural keyboard state (nw)
Diffstat (limited to 'src/emu/natkeyboard.cpp')
| -rw-r--r-- | src/emu/natkeyboard.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/emu/natkeyboard.cpp b/src/emu/natkeyboard.cpp index 9a654c2078d..9e88b589440 100644 --- a/src/emu/natkeyboard.cpp +++ b/src/emu/natkeyboard.cpp @@ -10,6 +10,7 @@ #include "emu.h" #include "natkeyboard.h" +#include "emuopts.h" //************************************************************************** @@ -314,6 +315,7 @@ const char_info charinfo[] = natural_keyboard::natural_keyboard(running_machine &machine) : m_machine(machine), + m_in_use(false), m_bufbegin(0), m_bufend(0), m_status_keydown(false), @@ -331,6 +333,9 @@ natural_keyboard::natural_keyboard(running_machine &machine) m_buffer.resize(KEY_BUFFER_SIZE); m_timer = machine.scheduler().timer_alloc(timer_expired_delegate(FUNC(natural_keyboard::timer), this)); } + + // retrieve option setting + set_in_use(machine.options().natural_keyboard()); } @@ -349,6 +354,30 @@ void natural_keyboard::configure(ioport_queue_chars_delegate queue_chars, ioport //------------------------------------------------- +// set_in_use - specify whether the natural +// keyboard is active +//------------------------------------------------- + +void natural_keyboard::set_in_use(bool usage) +{ + if (m_in_use != usage) + { + // update active usage + m_in_use = usage; + std::string error; + machine().options().set_value(OPTION_NATURAL_KEYBOARD, usage, OPTION_PRIORITY_CMDLINE, error); + assert(error.empty()); + + // lock out (or unlock) all keyboard inputs + for (auto &port : machine().ioport().ports()) + for (ioport_field &field : port.second->fields()) + if (field.type() == IPT_KEYBOARD) + field.live().lockout = usage; + } +} + + +//------------------------------------------------- // post - post a single character //------------------------------------------------- |
