summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-08-10 11:48:54 -0400
committer AJR <ajrhacker@users.noreply.github.com>2018-08-10 11:48:56 -0400
commit409c0663bc69bccee39f26afe65cddb3f104851e (patch)
treef27a36f571177bc4e5ec2ceb7f7c44314beae16f
parentf93103f06f2e891e3ed2efa958843861542c4beb (diff)
Send LF with CR when using natuaral keyboard on systems with a line feed key
-rw-r--r--src/emu/natkeyboard.cpp12
-rw-r--r--src/emu/natkeyboard.h1
2 files changed, 13 insertions, 0 deletions
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