You are not logged in.

#1 2015-01-27 21:00:52

pogojotz
Member
Registered: 2011-06-29
Posts: 10

Sleep button not caught as input event

I'm trying to get systemd-logind to handle my sleep button (Fn+F4) on a Acer Travelmate 8473TG. Previously I was using something like acpid (I think), since I was used to the ancient-before-systemd-ways.
In the more complex desktop environments, like e.g. cinnamon, it gets handled by the DE, but e.g. on openbox nothing happens.

Here is some analysis:

First let's check on systemd-logind and its monitored devices

# systemctl status systemd-logind
● systemd-logind.service - Login Service
   Loaded: loaded (/usr/lib/systemd/system/systemd-logind.service; static; vendor preset: disabled)
   Active: active (running) since Tue 2015-01-27 21:16:16 CET; 1min 35s ago
     Docs: man:systemd-logind.service(8)
           man:logind.conf(5)
           http://www.freedesktop.org/wiki/Software/systemd/logind
           http://www.freedesktop.org/wiki/Software/systemd/multiseat
 Main PID: 5173 (systemd-logind)
   Status: "Processing requests..."
   CGroup: /system.slice/systemd-logind.service
           └─5173 /usr/lib/systemd/systemd-logind

Jan 27 21:16:16 acer-pc systemd-logind[5173]: New seat seat0.
Jan 27 21:16:16 acer-pc systemd[1]: Started Login Service.
Jan 27 21:16:16 acer-pc systemd-logind[5173]: Watching system buttons on /dev/input/event3 (Power Button)
Jan 27 21:16:16 acer-pc systemd-logind[5173]: Watching system buttons on /dev/input/event0 (Video Bus)
Jan 27 21:16:16 acer-pc systemd-logind[5173]: Watching system buttons on /dev/input/event1 (Lid Switch)
Jan 27 21:16:16 acer-pc systemd-logind[5173]: Watching system buttons on /dev/input/event2 (Sleep Button)
Jan 27 21:16:16 acer-pc systemd-logind[5173]: New session c1 of user TheUser.

now lets compare this assignements with evtest

# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:      Video Bus
/dev/input/event1:      Lid Switch
/dev/input/event2:      Sleep Button
/dev/input/event3:      Power Button
/dev/input/event4:      AT Translated Set 2 keyboard
/dev/input/event5:      PC Speaker
/dev/input/event6:      HDA Digital PCBeep
/dev/input/event7:      HDA Intel PCH Mic
/dev/input/event8:      HDA Intel PCH Headphone
/dev/input/event9:      1.3M HD WebCam
/dev/input/event10:     Acer WMI hotkeys
/dev/input/event12:     Logitech Unifying Device. Wireless PID:4024
/dev/input/event13:     Logitech Unifying Device. Wireless PID:1025
/dev/input/event14:     HDA NVidia HDMI/DP,pcm=3
/dev/input/event15:     HDA NVidia HDMI/DP,pcm=7
/dev/input/event16:     HDA NVidia HDMI/DP,pcm=8
/dev/input/event17:     HDA NVidia HDMI/DP,pcm=9
/dev/input/event18:     SynPS/2 Synaptics TouchPad
Select the device event number [0-18]: ^C

Seems alright so far. Let's test the output of the event2 device while pressing the sleep button

# evtest /dev/input/event2
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x0 product 0x3 version 0x0
Input device name: "Sleep Button"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 142 (KEY_SLEEP)
Properties:
Testing ... (interrupt to exit)
^C

nothing happens...
Now I make the counter-check with the power button on event3. The power button is working fine with logind and
HandlePowerKey= has been set to ignore for this test.

# evtest /dev/input/event3
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x0 product 0x1 version 0x0
Input device name: "Power Button"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 116 (KEY_POWER)
Properties:
Testing ... (interrupt to exit)
Event: time 1422390249.041765, type 1 (EV_KEY), code 116 (KEY_POWER), value 1
Event: time 1422390249.041765, -------------- EV_SYN ------------
Event: time 1422390249.041811, type 1 (EV_KEY), code 116 (KEY_POWER), value 0
Event: time 1422390249.041811, -------------- EV_SYN ------------
^C

Thats the output that was to expect. When I check if and how logind received those keys,

# journalctl -n 5 -t systemd-logind
-- Logs begin at Sun 2014-10-05 22:05:39 CEST, end at Tue 2015-01-27 21:34:30 CET. --
Jan 27 21:16:16 acer-pc systemd-logind[5173]: Watching system buttons on /dev/input/event0 (Video Bus)
Jan 27 21:16:16 acer-pc systemd-logind[5173]: Watching system buttons on /dev/input/event1 (Lid Switch)
Jan 27 21:16:16 acer-pc systemd-logind[5173]: Watching system buttons on /dev/input/event2 (Sleep Button)
Jan 27 21:16:16 acer-pc systemd-logind[5173]: New session c1 of user TheUser.
Jan 27 21:17:45 acer-pc systemd-logind[5173]: Power key pressed.

I only get the power key shown. Looking at the output of "AT Translated Set 2 keyboard", which is event4, while pressing first the sleep button then the power button I get

# evtest /dev/input/event4
Input driver version is 1.0.1
Input device ID: bus 0x11 vendor 0x1 product 0x1 version 0xab41
Input device name: "AT Translated Set 2 keyboard"
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 61 (KEY_F3)
    Event code 62 (KEY_F4)
    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 112 (KEY_MACRO)
    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 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 138 (KEY_HELP)
    Event code 140 (KEY_CALC)
    Event code 141 (KEY_SETUP)
    Event code 142 (KEY_SLEEP)
    Event code 143 (KEY_WAKEUP)
    Event code 148 (KEY_PROG1)
    Event code 149 (KEY_PROG2)
    Event code 150 (KEY_WWW)
    Event code 155 (KEY_MAIL)
    Event code 156 (KEY_BOOKMARKS)
    Event code 157 (KEY_COMPUTER)
    Event code 158 (KEY_BACK)
    Event code 159 (KEY_FORWARD)
    Event code 163 (KEY_NEXTSONG)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 165 (KEY_PREVIOUSSONG)
    Event code 166 (KEY_STOPCD)
    Event code 173 (KEY_REFRESH)
    Event code 183 (KEY_F13)
    Event code 184 (KEY_F14)
    Event code 185 (KEY_F15)
    Event code 192 (KEY_F22)
    Event code 193 (KEY_F23)
    Event code 217 (KEY_SEARCH)
    Event code 224 (KEY_BRIGHTNESSDOWN)
    Event code 225 (KEY_BRIGHTNESSUP)
    Event code 226 (KEY_MEDIA)
    Event code 227 (KEY_SWITCHVIDEOMODE)
    Event code 236 (KEY_BATTERY)
    Event code 237 (KEY_BLUETOOTH)
    Event code 238 (KEY_WLAN)
    Event code 425 (KEY_PRESENTATION)
    Event code 434 (KEY_DOLLAR)
    Event code 435 (KEY_EURO)
    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)
    Event code 1 (LED_CAPSL)
    Event code 2 (LED_SCROLLL)
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 1422391474.236955, type 4 (EV_MSC), code 4 (MSC_SCAN), value 1c
Event: time 1422391474.236955, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
Event: time 1422391474.236955, -------------- EV_SYN ------------
Event: time 1422391480.018764, type 4 (EV_MSC), code 4 (MSC_SCAN), value df
Event: time 1422391480.018764, type 1 (EV_KEY), code 142 (KEY_SLEEP), value 1
Event: time 1422391480.018764, -------------- EV_SYN ------------
Event: time 1422391480.116110, type 4 (EV_MSC), code 4 (MSC_SCAN), value df
Event: time 1422391480.116110, type 1 (EV_KEY), code 142 (KEY_SLEEP), value 0
Event: time 1422391480.116110, -------------- EV_SYN ------------
Event: time 1422391482.859663, type 4 (EV_MSC), code 4 (MSC_SCAN), value f8
Event: time 1422391482.859663, type 1 (EV_KEY), code 464 (KEY_FN), value 1
Event: time 1422391482.859663, -------------- EV_SYN ------------
Event: time 1422391482.865106, type 4 (EV_MSC), code 4 (MSC_SCAN), value f8
Event: time 1422391482.865106, type 1 (EV_KEY), code 464 (KEY_FN), value 0
Event: time 1422391482.865106, -------------- EV_SYN ------------

As you can see the sleep button is caught as a keyboard key, but the power button isn't.

I couldn't find much leads on this behaviour on the internet. Of which probably the most fitting was this bug report https://bugzilla.kernel.org/show_bug.cgi?id=8898, which is unfortunately marked WILL_NOT_FIX. But since the bug report is from 2007, may be another way to fix this opened up in the meantime.

Do you have any ideas on this? Sure I could go back to acpid or what ever, but if I just wanted it handled nicely and cleanly by logind?
Thanks in advance

EDIT:
Also maybe this is interesting?

# dmesg | grep input
[    0.475535] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:2d/LNXVIDEO:00/input/input0
[    0.475890] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input1
[    0.496561] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input2
[    0.496620] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
[    0.549091] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4
[    3.031530] input: PC Speaker as /devices/platform/pcspkr/input/input6
[    3.045418] sound hdaudioC0D0:    inputs:
[    3.050575] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/sound/card0/hdaudioC0D0/input8
[    3.050773] input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input9
[    3.050848] input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10
[    3.351234] logitech-djreceiver 0003:046D:C52B.0003: hiddev0,hidraw0: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:1d.0-1.2/input2
[    3.364221] input: 1.3M HD WebCam as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.5/1-1.5:1.0/input/input11
[    3.382014] input: Acer WMI hotkeys as /devices/virtual/input/input12
[    3.382421] input: Acer BMA150 accelerometer as /devices/virtual/input/input13
[    3.405943] input: Logitech Unifying Device. Wireless PID:4024 as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.2/4-1.2:1.2/0003:046D:C52B.0003/0003:046D:C52B.0004/input/input14
[    3.406060] logitech-djdevice 0003:046D:C52B.0004: input,hidraw1: USB HID v1.11 Keyboard [Logitech Unifying Device. Wireless PID:4024] on usb-0000:00:1d.0-1.2:1
[    3.406522] input: Logitech Unifying Device. Wireless PID:1025 as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.2/4-1.2:1.2/0003:046D:C52B.0003/0003:046D:C52B.0005/input/input15
[    3.406643] logitech-djdevice 0003:046D:C52B.0005: input,hidraw2: USB HID v1.11 Mouse [Logitech Unifying Device. Wireless PID:1025] on usb-0000:00:1d.0-1.2:2
[    3.683334] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input16
[    3.683440] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input17
[    3.683529] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input18
[    3.683612] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input19
[    3.894452] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input7

Last edited by pogojotz (2015-01-27 21:13:39)

Offline

Board footer

Powered by FluxBB