From eadd1dee1b8cc1803c53ccb2df0966f6cbe0d101 Mon Sep 17 00:00:00 2001 From: Rocco Antoniou Date: Tue, 28 Oct 2025 20:23:03 -0600 Subject: [PATCH 1/3] also send keys --- src/sensors/ET16S.cpp | 16 ++++++++++++++++ src/sensors/dr16.cpp | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/sensors/ET16S.cpp b/src/sensors/ET16S.cpp index 69f4e2b5..209ac5c6 100644 --- a/src/sensors/ET16S.cpp +++ b/src/sensors/ET16S.cpp @@ -618,5 +618,21 @@ TransmitterData ET16S::get_transmitter_data(){ transmitter_data.trim_four = get_trim_four(); transmitter_data.trim_five = get_trim_five(); transmitter_data.trim_six = get_trim_six(); + transmitter_data.keys.key.w = keys.w; + transmitter_data.keys.key.s = keys.s; + transmitter_data.keys.key.a = keys.a; + transmitter_data.keys.key.d = keys.d; + transmitter_data.keys.key.shift = keys.shift; + transmitter_data.keys.key.ctrl = keys.ctrl; + transmitter_data.keys.key.q = keys.q; + transmitter_data.keys.key.e = keys.e; + transmitter_data.keys.key.r = keys.r; + transmitter_data.keys.key.f = keys.f; + transmitter_data.keys.key.g = keys.g; + transmitter_data.keys.key.z = keys.z; + transmitter_data.keys.key.x = keys.x; + transmitter_data.keys.key.c = keys.c; + transmitter_data.keys.key.v = keys.v; + transmitter_data.keys.key.b = keys.b; return transmitter_data; } diff --git a/src/sensors/dr16.cpp b/src/sensors/dr16.cpp index 03bc6553..3c0212a9 100644 --- a/src/sensors/dr16.cpp +++ b/src/sensors/dr16.cpp @@ -285,5 +285,21 @@ TransmitterData DR16::get_transmitter_data(){ transmitter_data.r_stick_y = get_r_stick_y(); transmitter_data.wheel = get_wheel(); transmitter_data.safety_switch = get_safety_switch(); + transmitter_data.keys.key.w = keys.w; + transmitter_data.keys.key.s = keys.s; + transmitter_data.keys.key.a = keys.a; + transmitter_data.keys.key.d = keys.d; + transmitter_data.keys.key.shift = keys.shift; + transmitter_data.keys.key.ctrl = keys.ctrl; + transmitter_data.keys.key.q = keys.q; + transmitter_data.keys.key.e = keys.e; + transmitter_data.keys.key.r = keys.r; + transmitter_data.keys.key.f = keys.f; + transmitter_data.keys.key.g = keys.g; + transmitter_data.keys.key.z = keys.z; + transmitter_data.keys.key.x = keys.x; + transmitter_data.keys.key.c = keys.c; + transmitter_data.keys.key.v = keys.v; + transmitter_data.keys.key.b = keys.b; return transmitter_data; } From 2605e4ae84b3cbf5f7c0236c5a795d7004b34b98 Mon Sep 17 00:00:00 2001 From: Rocco Antoniou Date: Wed, 29 Oct 2025 09:38:55 -0600 Subject: [PATCH 2/3] use second keyboard byte from packet --- src/sensors/dr16.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/sensors/dr16.cpp b/src/sensors/dr16.cpp index 3c0212a9..155c3cae 100644 --- a/src/sensors/dr16.cpp +++ b/src/sensors/dr16.cpp @@ -23,8 +23,7 @@ void DR16::init() { void DR16::read() { // each channel is 11 bits, minus the switches and keyboard inputs uint16_t c0{ 0 }, c1{ 0 }, c2{ 0 }, c3{ 0 }, wh{ 0 }; - uint8_t s1{ 0 }, s2{ 0 }, k1{ 0 }; - // uint8_t k2{ 0 }; + uint8_t s1{ 0 }, s2{ 0 }, k1{ 0 }, k2{ 0 }; // if read is not called regularly enough, it may miss a packet and start reading halfway through another packet // since the dr16 data structure does not include a start of transmission byte, we need to time our reads based on @@ -112,7 +111,7 @@ void DR16::read() { c3 = ((m_inputRaw[5] & 0x0f) << 7) | ((m_inputRaw[4] & 0xfe) >> 1); wh = ((m_inputRaw[17] & 0x7) << 8) | m_inputRaw[16]; k1 = m_inputRaw[14]; - // k2 = m_inputRaw[15]; + k2 = m_inputRaw[15]; mouse_x = (m_inputRaw[7] << 8) | m_inputRaw[6]; mouse_y = (m_inputRaw[9] << 8) | m_inputRaw[8]; @@ -160,14 +159,14 @@ void DR16::read() { keys.q = (k1 >> 6) & 0x01; keys.e = (k1 >> 7) & 0x01; // second byte - keys.r = (k1 >> 0) & 0x01; - keys.f = (k1 >> 1) & 0x01; - keys.g = (k1 >> 2) & 0x01; - keys.z = (k1 >> 3) & 0x01; - keys.x = (k1 >> 4) & 0x01; - keys.c = (k1 >> 5) & 0x01; - keys.v = (k1 >> 6) & 0x01; - keys.b = (k1 >> 7) & 0x01; + keys.r = (k2 >> 0) & 0x01; + keys.f = (k2 >> 1) & 0x01; + keys.g = (k2 >> 2) & 0x01; + keys.z = (k2 >> 3) & 0x01; + keys.x = (k2 >> 4) & 0x01; + keys.c = (k2 >> 5) & 0x01; + keys.v = (k2 >> 6) & 0x01; + keys.b = (k2 >> 7) & 0x01; } else { uint32_t dt = micros() - m_prevTime; m_failTime += dt; From 067b8f24f8f1b4d3122720a18c884b6a7a47a6a6 Mon Sep 17 00:00:00 2001 From: Rocco Antoniou Date: Sat, 1 Nov 2025 17:15:06 -0600 Subject: [PATCH 3/3] Remove keys from et16s --- src/sensors/ET16S.cpp | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/sensors/ET16S.cpp b/src/sensors/ET16S.cpp index 209ac5c6..69f4e2b5 100644 --- a/src/sensors/ET16S.cpp +++ b/src/sensors/ET16S.cpp @@ -618,21 +618,5 @@ TransmitterData ET16S::get_transmitter_data(){ transmitter_data.trim_four = get_trim_four(); transmitter_data.trim_five = get_trim_five(); transmitter_data.trim_six = get_trim_six(); - transmitter_data.keys.key.w = keys.w; - transmitter_data.keys.key.s = keys.s; - transmitter_data.keys.key.a = keys.a; - transmitter_data.keys.key.d = keys.d; - transmitter_data.keys.key.shift = keys.shift; - transmitter_data.keys.key.ctrl = keys.ctrl; - transmitter_data.keys.key.q = keys.q; - transmitter_data.keys.key.e = keys.e; - transmitter_data.keys.key.r = keys.r; - transmitter_data.keys.key.f = keys.f; - transmitter_data.keys.key.g = keys.g; - transmitter_data.keys.key.z = keys.z; - transmitter_data.keys.key.x = keys.x; - transmitter_data.keys.key.c = keys.c; - transmitter_data.keys.key.v = keys.v; - transmitter_data.keys.key.b = keys.b; return transmitter_data; }