diff mbox series

HID: apple: Add support for recent firmware

Message ID 20200129062631.22694-1-mansour@oxplot.com (mailing list archive)
State Mainlined
Commit e433be929e63265b7412478eb7ff271467aee2d7
Delegated to: Jiri Kosina
Headers show
Series HID: apple: Add support for recent firmware | expand

Commit Message

Mansour Behabadi Jan. 29, 2020, 6:26 a.m. UTC
Magic Keyboards with more recent firmware (0x0100) report
Fn key differently. Without this patch, Fn key may not
behave as expected and may not be configurable via hid_apple
fnmode module parameter.

Signed-off-by: Mansour Behabadi <mansour@oxplot.com>
---
 drivers/hid/hid-apple.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Jiri Kosina Feb. 4, 2020, 12:48 p.m. UTC | #1
On Wed, 29 Jan 2020, Mansour Behabadi wrote:

> Magic Keyboards with more recent firmware (0x0100) report
> Fn key differently. Without this patch, Fn key may not
> behave as expected and may not be configurable via hid_apple
> fnmode module parameter.
> 
> Signed-off-by: Mansour Behabadi <mansour@oxplot.com>
> ---
>  drivers/hid/hid-apple.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
> index 6ac8becc2372..d732d1d10caf 100644
> --- a/drivers/hid/hid-apple.c
> +++ b/drivers/hid/hid-apple.c
> @@ -340,7 +340,8 @@ static int apple_input_mapping(struct hid_device *hdev, struct hid_input *hi,
>  		unsigned long **bit, int *max)
>  {
>  	if (usage->hid == (HID_UP_CUSTOM | 0x0003) ||
> -			usage->hid == (HID_UP_MSVENDOR | 0x0003)) {
> +			usage->hid == (HID_UP_MSVENDOR | 0x0003) ||
> +			usage->hid == (HID_UP_HPVENDOR2 | 0x0003)) {
>  		/* The fn key on Apple USB keyboards */

Hmm, one day we should probably ditch this "vendor-specific" naming, which 
doesn't really match reality at all any more.

Also the mappings in hid-input for these usage pages are pretty awkward 
these days.

Anyway, that is for later. I am queuing your patch now, thanks.
diff mbox series

Patch

diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
index 6ac8becc2372..d732d1d10caf 100644
--- a/drivers/hid/hid-apple.c
+++ b/drivers/hid/hid-apple.c
@@ -340,7 +340,8 @@  static int apple_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 		unsigned long **bit, int *max)
 {
 	if (usage->hid == (HID_UP_CUSTOM | 0x0003) ||
-			usage->hid == (HID_UP_MSVENDOR | 0x0003)) {
+			usage->hid == (HID_UP_MSVENDOR | 0x0003) ||
+			usage->hid == (HID_UP_HPVENDOR2 | 0x0003)) {
 		/* The fn key on Apple USB keyboards */
 		set_bit(EV_REP, hi->input->evbit);
 		hid_map_usage_clear(hi, usage, bit, max, EV_KEY, KEY_FN);