diff options
Diffstat (limited to 'src/emu/natkeyboard.cpp')
-rw-r--r-- | src/emu/natkeyboard.cpp | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/src/emu/natkeyboard.cpp b/src/emu/natkeyboard.cpp index 7d154787c0c..14b5e9578b4 100644 --- a/src/emu/natkeyboard.cpp +++ b/src/emu/natkeyboard.cpp @@ -350,9 +350,9 @@ natural_keyboard::natural_keyboard(running_machine &machine) void natural_keyboard::configure(ioport_queue_chars_delegate queue_chars, ioport_accept_char_delegate accept_char, ioport_charqueue_empty_delegate charqueue_empty) { // set the callbacks - m_queue_chars = queue_chars; - m_accept_char = accept_char; - m_charqueue_empty = charqueue_empty; + m_queue_chars = std::move(queue_chars); + m_accept_char = std::move(accept_char); + m_charqueue_empty = std::move(charqueue_empty); } @@ -385,29 +385,32 @@ void natural_keyboard::set_in_use(bool usage) //------------------------------------------------- -// post - post a single character +// post_char - post a single character //------------------------------------------------- -void natural_keyboard::post(char32_t ch) +void natural_keyboard::post_char(char32_t ch, bool normalize_crlf) { - // ignore any \n that are preceded by \r - if (m_last_cr && ch == '\n') + if (normalize_crlf) { - m_last_cr = false; - return; - } + // ignore any \n that are preceded by \r + if (m_last_cr && ch == '\n') + { + m_last_cr = false; + return; + } - // change all eolns to '\r' - if (ch == '\n') - ch = '\r'; - else - m_last_cr = (ch == '\r'); + // change all eolns to '\r' + if (ch == '\n') + ch = '\r'; + else + m_last_cr = (ch == '\r'); + } // logging if (LOG_NATURAL_KEYBOARD) { const keycode_map_entry *code = find_code(ch); - machine().logerror("natural_keyboard::post(): code=%i (%s) field.name='%s'\n", int(ch), unicode_to_string(ch).c_str(), (code != nullptr && code->field[0] != nullptr) ? code->field[0]->name() : "<null>"); + machine().logerror("natural_keyboard::post_char(): code=%i (%s) field.name='%s'\n", int(ch), unicode_to_string(ch).c_str(), (code != nullptr && code->field[0] != nullptr) ? code->field[0]->name() : "<null>"); } // can we post this key in the queue directly? @@ -447,7 +450,7 @@ void natural_keyboard::post(const char32_t *text, size_t length, const attotime while (length > 0 && !full()) { // fetch next character - post(*text++); + post_char(*text++, true); length--; } } @@ -479,7 +482,7 @@ void natural_keyboard::post_utf8(const char *text, size_t length, const attotime } // append to the buffer - post(uc); + post_char(uc, true); text += count; length -= count; } @@ -565,7 +568,7 @@ void natural_keyboard::post_coded(const char *text, size_t length, const attotim // if we got a code, post it if (ch != 0) - post(ch); + post_char(ch); curpos += increment; } } |