>Synopsis:      Prtsc button doesn't work on USB keyboard
>Category:      xenocara
>Environment:
        System      : OpenBSD 7.6
        Details     : OpenBSD 7.6-current (GENERIC.MP) #20: Fri Oct 11 23:56:48 
CEST 2024
                         
catap@matebook.local:/usr/src/sys/arch/amd64/compile/GENERIC.MP

        Architecture: OpenBSD.amd64
        Machine     : amd64
>Description:
        I've noticed that Prtsc doesn't work when I plug a USB keyboard into my 
laptop. The same key on the embedded keyboard works fine.
        On console both keyboards work but send different code: 70 from USB and 
183 from embedded.
        I've asked on misc@ and had multiple confirmations that this is not 
unique behavior https://marc.info/?l=openbsd-misc&m=172869341512696&w=2
        Thus, here is the old topic with the same issue: 
https://marc.info/?l=openbsd-misc&m=170757405114868&w=2
>How-To-Repeat:
        1. probably attach any USB keyboard to a laptop
    2. run xev
    3. push Prtsc button
    4. see no event
>Fix:
        This patch fixed Prtsc on my keyboard:

Index: driver/xf86-input-keyboard/src/at_scancode.c
===================================================================
RCS file: /cvs/xenocara/driver/xf86-input-keyboard/src/at_scancode.c,v
retrieving revision 1.5
diff -u -p -r1.5 at_scancode.c
--- driver/xf86-input-keyboard/src/at_scancode.c        17 Dec 2015 06:03:10 
-0000      1.5
+++ driver/xf86-input-keyboard/src/at_scancode.c        12 Oct 2024 00:25:40 
-0000
@@ -95,6 +95,7 @@ ATScancode(InputInfoPtr pInfo, int *scan
             case KEY_KP_Decimal:  *scanCode = KEY_Delete;    break;  /* curs 
delete */
             case KEY_Enter:       *scanCode = KEY_KP_Enter;  break;  /* keypad 
enter */
             case KEY_LCtrl:       *scanCode = KEY_RCtrl;     break;  /* right 
ctrl */
+            case KEY_ShiftL:
             case KEY_KP_Multiply: *scanCode = KEY_Print;     break;  /* print 
*/
             case KEY_Slash:       *scanCode = KEY_KP_Divide; break;  /* keyp 
divide */
             case KEY_Alt:         *scanCode = KEY_AltLang;   break;  /* right 
alt */
@@ -113,7 +114,6 @@ ATScancode(InputInfoPtr pInfo, int *scan
                keyboards */
             case 0x01:            *scanCode = KEY_R_0xF4;    break;
             case 0x03:            *scanCode = KEY_R_0xF5;    break;
-            case 0x2A:
             case 0x36:
                 return TRUE;
             default:


-- 
wbr, Kirill

Reply via email to