Bug 91853

Summary: Scancode of translated keys by hid-apple not displayed
Product: evtest Reporter: Brice Waegeneire <brice.wge>
Component: generalAssignee: Peter Hutterer <peter.hutterer>
Status: RESOLVED NOTOURBUG QA Contact:
Severity: normal    
Priority: medium CC: brice.wge, peter.hutterer
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: attachment-455-0.html

Description Brice Waegeneire 2015-09-02 15:04:04 UTC
`evtest' 1.33 don't display the scancode of translated keys by the
`hid-apple' module. [Here] is the list of those keys.

The only only workaround that I have found to find the scancondes is to
use [Wireshark].
┌────
│ # evtest /dev/input/by-id/usb-Apple_Inc._Apple_Internal_Keyboard___Trackpad-event-kbd
│ Input driver version is 1.0.1
│ Input device ID: bus 0x3 vendor 0x5ac product 0x24d version 0x111
│ Input device name: "Apple Inc. Apple Internal Keyboard / Trackpad"
│ Supported events:
│   Event type 0 (EV_SYN)
│   Event type 1 (EV_KEY)
│     Event code 1 (KEY_ESC)
│     Event code 2 (KEY_1)
│     Event code 3 (KEY_2)
│     Event code 4 (KEY_3)
│     Event code 5 (KEY_4)
│     Event code 6 (KEY_5)
│     Event code 7 (KEY_6)
│     Event code 8 (KEY_7)
│     Event code 9 (KEY_8)
│     Event code 10 (KEY_9)
│     Event code 11 (KEY_0)
│     Event code 12 (KEY_MINUS)
│     Event code 13 (KEY_EQUAL)
│     Event code 14 (KEY_BACKSPACE)
│     Event code 15 (KEY_TAB)
│     Event code 16 (KEY_Q)
│     Event code 17 (KEY_W)
│     Event code 18 (KEY_E)
│     Event code 19 (KEY_R)
│     Event code 20 (KEY_T)
│     Event code 21 (KEY_Y)
│     Event code 22 (KEY_U)
│     Event code 23 (KEY_I)
│     Event code 24 (KEY_O)
│     Event code 25 (KEY_P)
│     Event code 26 (KEY_LEFTBRACE)
│     Event code 27 (KEY_RIGHTBRACE)
│     Event code 28 (KEY_ENTER)
│     Event code 29 (KEY_LEFTCTRL)
│     Event code 30 (KEY_A)
│     Event code 31 (KEY_S)
│     Event code 32 (KEY_D)
│     Event code 33 (KEY_F)
│     Event code 34 (KEY_G)
│     Event code 35 (KEY_H)
│     Event code 36 (KEY_J)
│     Event code 37 (KEY_K)
│     Event code 38 (KEY_L)
│     Event code 39 (KEY_SEMICOLON)
│     Event code 40 (KEY_APOSTROPHE)
│     Event code 41 (KEY_GRAVE)
│     Event code 42 (KEY_LEFTSHIFT)
│     Event code 43 (KEY_BACKSLASH)
│     Event code 44 (KEY_Z)
│     Event code 45 (KEY_X)
│     Event code 46 (KEY_C)
│     Event code 47 (KEY_V)
│     Event code 48 (KEY_B)
│     Event code 49 (KEY_N)
│     Event code 50 (KEY_M)
│     Event code 51 (KEY_COMMA)
│     Event code 52 (KEY_DOT)
│     Event code 53 (KEY_SLASH)
│     Event code 54 (KEY_RIGHTSHIFT)
│     Event code 55 (KEY_KPASTERISK)
│     Event code 56 (KEY_LEFTALT)
│     Event code 57 (KEY_SPACE)
│     Event code 58 (KEY_CAPSLOCK)
│     Event code 59 (KEY_F1)
│     Event code 60 (KEY_F2)
│     Event code 63 (KEY_F5)
│     Event code 64 (KEY_F6)
│     Event code 65 (KEY_F7)
│     Event code 66 (KEY_F8)
│     Event code 67 (KEY_F9)
│     Event code 68 (KEY_F10)
│     Event code 69 (KEY_NUMLOCK)
│     Event code 70 (KEY_SCROLLLOCK)
│     Event code 71 (KEY_KP7)
│     Event code 72 (KEY_KP8)
│     Event code 73 (KEY_KP9)
│     Event code 74 (KEY_KPMINUS)
│     Event code 75 (KEY_KP4)
│     Event code 76 (KEY_KP5)
│     Event code 77 (KEY_KP6)
│     Event code 78 (KEY_KPPLUS)
│     Event code 79 (KEY_KP1)
│     Event code 80 (KEY_KP2)
│     Event code 81 (KEY_KP3)
│     Event code 82 (KEY_KP0)
│     Event code 83 (KEY_KPDOT)
│     Event code 85 (KEY_ZENKAKUHANKAKU)
│     Event code 86 (KEY_102ND)
│     Event code 87 (KEY_F11)
│     Event code 88 (KEY_F12)
│     Event code 89 (KEY_RO)
│     Event code 90 (KEY_KATAKANA)
│     Event code 91 (KEY_HIRAGANA)
│     Event code 92 (KEY_HENKAN)
│     Event code 93 (KEY_KATAKANAHIRAGANA)
│     Event code 94 (KEY_MUHENKAN)
│     Event code 95 (KEY_KPJPCOMMA)
│     Event code 96 (KEY_KPENTER)
│     Event code 97 (KEY_RIGHTCTRL)
│     Event code 98 (KEY_KPSLASH)
│     Event code 99 (KEY_SYSRQ)
│     Event code 100 (KEY_RIGHTALT)
│     Event code 102 (KEY_HOME)
│     Event code 103 (KEY_UP)
│     Event code 104 (KEY_PAGEUP)
│     Event code 105 (KEY_LEFT)
│     Event code 106 (KEY_RIGHT)
│     Event code 107 (KEY_END)
│     Event code 108 (KEY_DOWN)
│     Event code 109 (KEY_PAGEDOWN)
│     Event code 110 (KEY_INSERT)
│     Event code 111 (KEY_DELETE)
│     Event code 113 (KEY_MUTE)
│     Event code 114 (KEY_VOLUMEDOWN)
│     Event code 115 (KEY_VOLUMEUP)
│     Event code 116 (KEY_POWER)
│     Event code 117 (KEY_KPEQUAL)
│     Event code 119 (KEY_PAUSE)
│     Event code 120 (KEY_SCALE)
│     Event code 121 (KEY_KPCOMMA)
│     Event code 122 (KEY_HANGUEL)
│     Event code 123 (KEY_HANJA)
│     Event code 124 (KEY_YEN)
│     Event code 125 (KEY_LEFTMETA)
│     Event code 126 (KEY_RIGHTMETA)
│     Event code 127 (KEY_COMPOSE)
│     Event code 128 (KEY_STOP)
│     Event code 129 (KEY_AGAIN)
│     Event code 130 (KEY_PROPS)
│     Event code 131 (KEY_UNDO)
│     Event code 132 (KEY_FRONT)
│     Event code 133 (KEY_COPY)
│     Event code 134 (KEY_OPEN)
│     Event code 135 (KEY_PASTE)
│     Event code 136 (KEY_FIND)
│     Event code 137 (KEY_CUT)
│     Event code 138 (KEY_HELP)
│     Event code 140 (KEY_CALC)
│     Event code 142 (KEY_SLEEP)
│     Event code 150 (KEY_WWW)
│     Event code 152 (KEY_SCREENLOCK)
│     Event code 158 (KEY_BACK)
│     Event code 159 (KEY_FORWARD)
│     Event code 161 (KEY_EJECTCD)
│     Event code 163 (KEY_NEXTSONG)
│     Event code 164 (KEY_PLAYPAUSE)
│     Event code 165 (KEY_PREVIOUSSONG)
│     Event code 166 (KEY_STOPCD)
│     Event code 168 (KEY_REWIND)
│     Event code 173 (KEY_REFRESH)
│     Event code 176 (KEY_EDIT)
│     Event code 177 (KEY_SCROLLUP)
│     Event code 178 (KEY_SCROLLDOWN)
│     Event code 179 (KEY_KPLEFTPAREN)
│     Event code 180 (KEY_KPRIGHTPAREN)
│     Event code 183 (KEY_F13)
│     Event code 184 (KEY_F14)
│     Event code 185 (KEY_F15)
│     Event code 186 (KEY_F16)
│     Event code 187 (KEY_F17)
│     Event code 188 (KEY_F18)
│     Event code 189 (KEY_F19)
│     Event code 190 (KEY_F20)
│     Event code 191 (KEY_F21)
│     Event code 192 (KEY_F22)
│     Event code 193 (KEY_F23)
│     Event code 194 (KEY_F24)
│     Event code 204 (KEY_DASHBOARD)
│     Event code 208 (KEY_FASTFORWARD)
│     Event code 224 (KEY_BRIGHTNESSDOWN)
│     Event code 225 (KEY_BRIGHTNESSUP)
│     Event code 227 (KEY_SWITCHVIDEOMODE)
│     Event code 228 (KEY_KBDILLUMTOGGLE)
│     Event code 229 (KEY_KBDILLUMDOWN)
│     Event code 230 (KEY_KBDILLUMUP)
│     Event code 240 (KEY_UNKNOWN)
│     Event code 464 (KEY_FN)
│   Event type 4 (EV_MSC)
│     Event code 4 (MSC_SCAN)
│   Event type 17 (EV_LED)
│     Event code 0 (LED_NUML) state 0
│     Event code 1 (LED_CAPSL) state 0
│     Event code 2 (LED_SCROLLL) state 0
│     Event code 3 (LED_COMPOSE) state 0
│     Event code 4 (LED_KANA) state 0
│ Key repeat handling:
│   Repeat type 20 (EV_REP)
│     Repeat code 0 (REP_DELAY)
│       Value    250
│     Repeat code 1 (REP_PERIOD)
│       Value     33
│ Properties:
│ Testing ... (interrupt to exit)
│ Event: time 1441205233.613742, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
│ Event: time 1441205233.613742, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
│ Event: time 1441205233.613742, -------------- SYN_REPORT ------------
│ Event: time 1441205235.605718, type 1 (EV_KEY), code 165 (KEY_PREVIOUSSONG), value 1
│ Event: time 1441205235.605718, -------------- SYN_REPORT ------------
│ Event: time 1441205235.717690, type 1 (EV_KEY), code 165 (KEY_PREVIOUSSONG), value 0
│ Event: time 1441205235.717690, -------------- SYN_REPORT ------------
│ Event: time 1441205236.405711, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 1
│ Event: time 1441205236.405711, -------------- SYN_REPORT ------------
│ Event: time 1441205236.501705, type 1 (EV_KEY), code 164 (KEY_PLAYPAUSE), value 0
│ Event: time 1441205236.501705, -------------- SYN_REPORT ------------
└────


[Here]
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/hid/hid-apple.c#n68

[Wireshark] https://wiki.wireshark.org/CaptureSetup/USB
Comment 1 Peter Hutterer 2015-09-02 21:43:20 UTC
I doubt this is an evtest bug. evtest is simple enough that it'll just print whatever it gets. Especially the numeric value, and where it can't look up the name it'll display "?" instead. So if evtest isn't displaying the scancodes, they're not coming out of the kernel.
Comment 2 Brice Waegeneire 2015-09-02 22:29:43 UTC
> So if evtest isn't displaying the scancodes, they're not 
> coming out of the kernel.
If they are not coming out of the kernel how can they be working in the tty and Xorg? By the way when they are remapped manually with udev they show up in evtest.

If this issue doesn't come from evtest where should I post it?
Comment 3 Peter Hutterer 2015-09-03 00:09:54 UTC
are they coming out of a different device node?
Comment 4 Brice Waegeneire 2015-09-03 00:23:43 UTC
No all the tests I did come from the same device `/dev/input/by-id/usb-Apple_Inc._Apple_Internal_Keyboard___Trackpad-event-kbd', a builtin keyboard of Macbook Air(mba4.2).
Comment 5 Peter Hutterer 2015-09-03 00:29:42 UTC
run evtest without any arguments and it'll list all devices, see if there's one that looks promising and then check whether the keys are coming of of that. for some devices the kernel creates two device nodes and some keys, especially special keys, are then routed through the other device. Don't know if that's the case for this device, but let's verify it anyway.
Comment 6 Brice Waegeneire 2015-09-03 00:36:26 UTC
After testing the 13th devices only the 9th, the keyboard, display input when the problematic keys are pressed.

# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:	Lid Switch
/dev/input/event1:	Power Button
/dev/input/event2:	Sleep Button
/dev/input/event3:	Power Button
/dev/input/event4:	Video Bus
/dev/input/event5:	PC Speaker
/dev/input/event6:	bcm5974
/dev/input/event7:	FaceTime Camera (Built-in)
/dev/input/event8:	HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event9:	Apple Inc. Apple Internal Keyboard / Trackpad
/dev/input/event11:	HDA Intel PCH Headphone
/dev/input/event12:	HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event13:	HDA Intel PCH HDMI/DP,pcm=8
Select the device event number [0-13]:
Comment 7 Peter Hutterer 2017-10-02 23:18:27 UTC
sorry, this one dropped under the table. Closing it now, please re-open if this is still an issue
Comment 8 Brice Waegeneire 2017-10-03 07:13:42 UTC
The issue is still there and I still care about it since apple keyboards have a special layouts which is prone to users wanting to remap some of the keys. And the current workaround of going through wireshark to get them isn't straight forward at all.

The keys that doesn't have scan codes are only the media/function keys and the "KEY_GRAVE". If you think the issue doesn't come from evtest, to whom I should address this?
Comment 9 Peter Hutterer 2017-10-03 08:04:20 UTC
wait, when you mention scancodes are you talking about MSC_SCAN? or that nothing comes out of the keyboard at all?
Comment 10 Brice Waegeneire 2017-10-03 12:37:52 UTC
Created attachment 134635 [details]
attachment-455-0.html

Yes the value field of the line with MSC_SCAN. On other keyboards
 evtest return it for each keys. Here is an example from my first post
where first the neter key is pressed and I get the value  70028 however
when the media key previous is pressed it is missing the line MSC_SCAN and
the value that I'm looking for.

│ Event: time 1441205233.613742, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
│ Event: time 1441205233.613742, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
│ Event: time 1441205233.613742, -------------- SYN_REPORT ------------
│ Event: time 1441205235.605718, type 1 (EV_KEY), code 165
(KEY_PREVIOUSSONG), value 1
│ Event: time 1441205235.605718, -------------- SYN_REPORT ------------


2017-10-03 10:04 GMT+02:00 <bugzilla-daemon@freedesktop.org>:

> Peter Hutterer <peter.hutterer@who-t.net> changed bug 91853
> <https://bugs.freedesktop.org/show_bug.cgi?id=91853>
> What Removed Added
> Status REOPENED NEEDINFO
>
> *Comment # 9 <https://bugs.freedesktop.org/show_bug.cgi?id=91853#c9> on
> bug 91853 <https://bugs.freedesktop.org/show_bug.cgi?id=91853> from Peter
> Hutterer <peter.hutterer@who-t.net> *
>
> wait, when you mention scancodes are you talking about MSC_SCAN? or that
> nothing comes out of the keyboard at all?
>
> ------------------------------
> You are receiving this mail because:
>
>    - You are on the CC list for the bug.
>    - You reported the bug.
>
>
Comment 11 Peter Hutterer 2017-10-03 22:19:34 UTC
oh, right. In that case you'll have to bring this up with the kernel. evtest doesn't filter on events and if we don't get a MSC_SCAN it's because the kernel didn't give us one.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.