From c74e8c3fb9f7df71833951f042e7e68ec5235f9a Mon Sep 17 00:00:00 2001
From: KO Myung-Hun <komh78@gmail.com>
Date: Thu, 5 Nov 2026 11:06:29 +0900
Subject: [PATCH] Fix keypad keys do not work
On some keyboards, keypad keys are treated as character keys. As a result,
4OS2 ignore the keys.
---
c/os2tty.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/c/os2tty.c b/c/os2tty.c
index b7a87bf..e8fa40b 100644
|
a
|
b
|
unsigned int GetKeystroke( int eflag )
|
| 28 | 28 | // wait for a key, and check for extended scan code |
| 29 | 29 | do { |
| 30 | 30 | (void)KbdCharIn( &keyinfo, (USHORT)0, (HKBD)0 ); |
| | 31 | // Bit 1 of keyinfo.fbStatus is not set in case of keypad keys on some keyboards |
| | 32 | if (!(keyinfo.fbStatus & 2) && ((keyinfo.chChar == 0) || (keyinfo.chChar == 0xE0)) && |
| | 33 | ((keyinfo.chScan >= 0x47) && (keyinfo.chScan <= 0x49)) || |
| | 34 | ((keyinfo.chScan >= 0x4B) && (keyinfo.chScan <= 0x4D)) || |
| | 35 | ((keyinfo.chScan >= 0x4F) && (keyinfo.chScan <= 0x53))) |
| | 36 | keyinfo.fbStatus |= 2; |
| 31 | 37 | c = (((keyinfo.fbStatus & 2) && ((keyinfo.chChar == 0) || (keyinfo.chChar == 0xE0))) ? (keyinfo.chScan | 0x100) : keyinfo.chChar); |
| 32 | 38 | } while ( c == 0 ); |
| 33 | 39 | } |