Ticket #90: 0001-Fix-keypad-keys-do-not-work.patch

File 0001-Fix-keypad-keys-do-not-work.patch, 1.3 KB (added by KO Myung-Hun, 32 hours ago)

Fix keypad keys

  • c/os2tty.c

    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 )  
    2828        // wait for a key, and check for extended scan code
    2929        do {
    3030            (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;
    3137            c = (((keyinfo.fbStatus & 2) && ((keyinfo.chChar == 0) || (keyinfo.chChar == 0xE0))) ? (keyinfo.chScan | 0x100) : keyinfo.chChar);
    3238        } while ( c == 0 );
    3339    }