From 409c0663bc69bccee39f26afe65cddb3f104851e Mon Sep 17 00:00:00 2001 From: AJR Date: Fri, 10 Aug 2018 11:48:54 -0400 Subject: [PATCH] Send LF with CR when using natuaral keyboard on systems with a line feed key --- src/emu/natkeyboard.cpp | 12 ++++++++++++ src/emu/natkeyboard.h | 1 + 2 files changed, 13 insertions(+) diff --git a/src/emu/natkeyboard.cpp b/src/emu/natkeyboard.cpp index 9a50109eb6f..7ecb034a3f9 100644 --- a/src/emu/natkeyboard.cpp +++ b/src/emu/natkeyboard.cpp @@ -323,6 +323,7 @@ natural_keyboard::natural_keyboard(running_machine &machine) , m_fieldnum(0) , m_status_keydown(false) , m_last_cr(false) + , m_post_lf(false) , m_timer(nullptr) , m_current_rate(attotime::zero) , m_queue_chars() @@ -412,8 +413,14 @@ void natural_keyboard::post(char32_t ch) // can we post this key in the queue directly? if (can_post_directly(ch)) + { internal_post(ch); + // post LF with CR + if (ch == '\r' && m_post_lf) + internal_post('\n'); + } + // can we post this key with an alternate representation? else if (can_post_alternate(ch)) { @@ -640,6 +647,11 @@ void natural_keyboard::build_codes(ioport_manager &manager) machine().logerror("natural_keyboard: code=%u (%s) port=%p field.name='%s'\n", code, unicode_to_string(code), (void *)&port, field.name()); } + + + // check for line feed key + if (code == '\n' && curshift == 0) + m_post_lf = true; } } } diff --git a/src/emu/natkeyboard.h b/src/emu/natkeyboard.h index aa29bf4503c..601b463d207 100644 --- a/src/emu/natkeyboard.h +++ b/src/emu/natkeyboard.h @@ -93,6 +93,7 @@ private: unsigned m_fieldnum; // current step in multi-key sequence bool m_status_keydown; // current keydown status bool m_last_cr; // was the last char a CR? + bool m_post_lf; // should we post LFs? emu_timer * m_timer; // timer for posting characters attotime m_current_rate; // current rate for posting ioport_queue_chars_delegate m_queue_chars; // queue characters callback