From: tmk Date: Wed, 13 May 2020 14:34:42 +0000 (+0900) Subject: ibmpc: Add Z-150 AT protocol recognition X-Git-Url: https://git.friedersdorff.com/?a=commitdiff_plain;h=f80601db962384146eb80705aaa3057a1b3848b4;p=max%2Ftmk_keyboard.git ibmpc: Add Z-150 AT protocol recognition https://github.com/tmk/tmk_keyboard/wiki/IBM-PC-AT-Keyboard-Protocol#zenith-z-150-beige --- 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