From f80601db962384146eb80705aaa3057a1b3848b4 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 13 May 2020 23:34:42 +0900 Subject: [PATCH] ibmpc: Add Z-150 AT protocol recognition https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-AT-Keyboard-Protocol#zenith-z-150-beige --- tmk_core/protocol/ibmpc.c | 11 ++++++++--- tmk_core/protocol/ibmpc.h | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/tmk_core/protocol/ibmpc.c b/tmk_core/protocol/ibmpc.c index a071db19..e84548c6 100644 --- a/tmk_core/protocol/ibmpc.c +++ b/tmk_core/protocol/ibmpc.c @@ -359,12 +359,17 @@ ISR(IBMPC_INT_VECT) case 0b01010000: case 0b11010000: // AT-done - // DO NOT check stop bit. Zenith Z-150(AT) asserts stop bit as low for no reason. - // https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-AT-Keyboard-Protocol#zenith-z-150-beige // TODO: parity check? ibmpc_isr_debug = isr_state; + // stop bit check + if (isr_state & 0x8000) { + ibmpc_protocol = IBMPC_PROTOCOL_AT; + } else { + // Zenith Z-150 AT(beige/white lable) asserts stop bit as low + // https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-AT-Keyboard-Protocol#zenith-z-150-beige + ibmpc_protocol = IBMPC_PROTOCOL_AT_Z150; + } isr_state = isr_state>>6; - ibmpc_protocol = IBMPC_PROTOCOL_AT; goto DONE; break; case 0b01100000: diff --git a/tmk_core/protocol/ibmpc.h b/tmk_core/protocol/ibmpc.h index c994ddb6..4f682aa7 100644 --- a/tmk_core/protocol/ibmpc.h +++ b/tmk_core/protocol/ibmpc.h @@ -72,6 +72,7 @@ POSSIBILITY OF SUCH DAMAGE. #define IBMPC_PROTOCOL_NO 0 #define IBMPC_PROTOCOL_AT 0x10 +#define IBMPC_PROTOCOL_AT_Z150 0x11 #define IBMPC_PROTOCOL_XT 0x20 #define IBMPC_PROTOCOL_XT_IBM 0x21 #define IBMPC_PROTOCOL_XT_CLONE 0x22 -- 2.46.2