Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Sep 2017 15:58:44 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 222646] ukbd(4): support Consumer Control based multimedia keys
Message-ID:  <bug-222646-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=222646

            Bug ID: 222646
           Summary: ukbd(4): support Consumer Control based multimedia
                    keys
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: greg@unrelenting.technology

Created attachment 186765
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=186765&action=edit
ukbd_consumer_ctl.patch

This patch adds support for media keys (such as play/pause, next/prev track,
volume up/down) on USB keyboards where they're implemented as HID Consumer
Control reports by converting them into plain old key presses of matching keys.

Background: my mouse (Logitech G402) pretends to also be a keyboard, to allow
two programmable extra buttons to press any keyboard key. One of the options
for these keys is volume control, and I really like that. These key presses
were not recognized by the FreeBSD kernel. With this patch,
libinput-debug-events shows them as KEY_VOLUMEDOWN (114) and KEY_VOLUMEUP
(115), just like on Linux, and my XF86AudioRaise(Lower)Volume bindings in Xorg
work fine! Nothing in this patch is evdev specific though, it literally
translates these events to key presses.

Also: I have a wireless keyboard that pretends to also be a mouse (…yeah), and
for the media keys, it sends identical packets, but through a ums device. Tried
to do a similar thing (but evdev-only, since the normal mouse interface can't
press keys I guess) in the ums driver, wasted several hours only to encounter
weird problems… hid_locate couldn't even find the stuff, though it's clearly
there (uhidd recognizes it fine!). After removing the "Only copy HID item,
increment position and return if correct kindset" check from hid_get_item,
hid_locate "found" it but returned wrong data… So screw that for now, hopefully
most input devices use ukbd for media keys :D

-- 
You are receiving this mail because:
You are the assignee for the bug.


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-222646-8>