From 040e46b4fcf4664d28e8f8b46141faf5231ee1a2 Mon Sep 17 00:00:00 2001 From: b3n0b1 Date: Sun, 21 Jun 2026 08:47:50 -0400 Subject: [PATCH 1/2] add Konkr Fit (AYANEO sub-brand) controller support The AYANEO Konkr Fit reports DMI product_name 'KONKR FIT' (vendor 'KONKR') and uses the same controller hardware as the AYANEO 3 (1c4f:0002 composite + 045e:028e gamepad), so it is not autodetected. Add a CONFS entry. It has no detachable modules (no ayaneo-ec EC interface) and two back paddles, so magic_modules is omitted and extra_buttons is set to dual. The paddles emit KEY_L/KEY_R, which the existing driver already maps to extra_l1/extra_r1. Co-Authored-By: Claude Opus 4.8 --- src/hhd/device/ayaneo/const.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/hhd/device/ayaneo/const.py b/src/hhd/device/ayaneo/const.py index 6db6fdd4..10be8234 100644 --- a/src/hhd/device/ayaneo/const.py +++ b/src/hhd/device/ayaneo/const.py @@ -27,6 +27,15 @@ "rgb": True, **AYA_DEFAULT_CONF, }, + # Konkr (Ayaneo sub-brand). Same controller hw as AYANEO 3 + # (1c4f:0002 composite + 045e:028e gamepad) but no detachable + # modules (no ayaneo-ec EC interface), dual back paddles. + "KONKR FIT": { + "name": "KONKR FIT", + "extra_buttons": "dual", + "rgb": True, + **AYA_DEFAULT_CONF, + }, } AYA3_INIT = [ From 5f665b156028488d4caf9f8ac23865efb33def2a Mon Sep 17 00:00:00 2001 From: b3n0b1 Date: Sun, 21 Jun 2026 09:19:28 -0400 Subject: [PATCH 2/2] konkr fit: quad paddles + map BTN_MODE to guide The Konkr Fit has four extra buttons (two rear paddles emitting KEY_L/KEY_R -> extra_l1/r1, plus LC/RC emitting KEY_F21/F22 -> extra_l2/r2), so use extra_buttons=quad. Its main system button is the gamepad BTN_MODE; map it to the guide/Steam button (mode) instead of the QAM/overlay (share) via a new mode_is_guide dconf flag, leaving the AYANEO 3 behaviour unchanged. Co-Authored-By: Claude Opus 4.8 --- src/hhd/device/ayaneo/base.py | 8 +++++++- src/hhd/device/ayaneo/const.py | 7 +++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/hhd/device/ayaneo/base.py b/src/hhd/device/ayaneo/base.py index 42b60ab4..c7a618b2 100644 --- a/src/hhd/device/ayaneo/base.py +++ b/src/hhd/device/ayaneo/base.py @@ -509,13 +509,19 @@ def controller_loop( d_timer = HrtimerTrigger(conf["imu_hz"].to(int), [HrtimerTrigger.IMU_NAMES]) # Inputs + # By default the gamepad's BTN_MODE is repurposed as the QAM/overlay + # button (share). On devices where it is the main "guide" button (e.g. + # Konkr Fit), keep it as the XBOX default (mode) so it opens Steam. + xinput_btn_map = {**XBOX_BUTTON_MAP} + if not dconf.get("mode_is_guide", False): + xinput_btn_map[EC("BTN_MODE")] = "share" d_xinput = GenericGamepadEvdev( vid=[GAMEPAD_VID], pid=[GAMEPAD_PID], capabilities={EC("EV_KEY"): [EC("BTN_A")]}, required=True, hide=True, - btn_map={**XBOX_BUTTON_MAP, EC("BTN_MODE"): "share"}, + btn_map=xinput_btn_map, ) d_kbd_1 = GenericGamepadEvdev( diff --git a/src/hhd/device/ayaneo/const.py b/src/hhd/device/ayaneo/const.py index 10be8234..51b71411 100644 --- a/src/hhd/device/ayaneo/const.py +++ b/src/hhd/device/ayaneo/const.py @@ -29,10 +29,13 @@ }, # Konkr (Ayaneo sub-brand). Same controller hw as AYANEO 3 # (1c4f:0002 composite + 045e:028e gamepad) but no detachable - # modules (no ayaneo-ec EC interface), dual back paddles. + # modules (no ayaneo-ec EC interface). Four extra buttons (two rear + # paddles + LC/RC) and BTN_MODE is the main button, so it acts as the + # guide/Steam button rather than the QAM/overlay button. "KONKR FIT": { "name": "KONKR FIT", - "extra_buttons": "dual", + "extra_buttons": "quad", + "mode_is_guide": True, "rgb": True, **AYA_DEFAULT_CONF, },