Key input "stuck" while gaming

TheGaff

New Member
Joined
Feb 22, 2026
Messages
5
Reaction score
1
Credits
49
Hello! I have been trying to troubleshoot this for a few days and having an issue even describing what's going on. When I am gaming, I will be playing my game (I have tested Cities: Skylines 2 and Hoop Land Demo) and the WASD keys will intermittently get "stuck". The key itself isn't pressed down, but the input will continue to happen. If I press other inputs, it seems like the wrong key is still "held down".

I have taken a few steps. I have tried another keyboard as well, and the same issue occurs. I have updated the USB controller, reinstalled the same controller, I have reset my keyboard to factory settings, no dice for any of this. I have also checked and made sure sticky keys and repeating keys are turned off.

Oh yea, and I'm using a Keychron V6 Pro. Keychron does not provide Linux drivers as far as I can tell.

This makes any game basically unplayable, so I would appreciate any help!

Code:
System:
  Kernel: 6.17.0-14-generic arch: x86_64 bits: 64 compiler: gcc v: 13.3.0 clocksource: tsc
  Desktop: Cinnamon v: 6.4.8 tk: GTK v: 3.24.41 wm: Muffin v: 6.4.1 vt: 2 dm: GDM3 v: 46.2
    Distro: Linux Mint 22.2 Zara base: Ubuntu 24.04 noble
Machine:
  Type: Desktop Mobo: Gigabyte model: Z370 AORUS Gaming 3 v: x.x serial: <superuser required>
    uuid: <superuser required> UEFI: American Megatrends v: F3 date: 09/22/2017
CPU:
  Info: 6-core model: Intel Core i5-8600K bits: 64 type: MCP smt: <unsupported> arch: Coffee Lake
    rev: A cache: L1: 384 KiB L2: 1.5 MiB L3: 9 MiB
  Speed (MHz): avg: 4100 high: 4101 min/max: 800/4300 cores: 1: 4100 2: 4100 3: 4101 4: 4099
    5: 4100 6: 4100 bogomips: 43200
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Graphics:
  Device-1: NVIDIA TU116 [GeForce GTX 1660 Ti] vendor: eVga.com. driver: nvidia v: 580.126.09
    arch: Turing pcie: speed: 8 GT/s lanes: 16 ports: active: none off: DP-1,HDMI-A-1 empty: DVI-D-1
    bus-ID: 01:00.0 chip-ID: 10de:2182 class-ID: 0300
  Display: x11 server: X.Org v: 21.1.11 with: Xwayland v: 23.2.6 driver: X: loaded: nvidia
    unloaded: fbdev,modesetting,nouveau,vesa gpu: nv_platform,nvidia,nvidia-nvswitch display-ID: :1
    screens: 1
  Screen-1: 0 s-res: 3520x1080 s-dpi: 96 s-size: 931x286mm (36.65x11.26") s-diag: 974mm (38.34")
  Monitor-1: DP-1 note: disabled pos: primary,left model: Acer CB241H serial: <filter>
    res: 1920x1080 hz: 60 dpi: 92 size: 531x299mm (20.91x11.77") diag: 609mm (24") modes:
    max: 1920x1080 min: 640x480
  Monitor-2: HDMI-A-1 mapped: HDMI-0 note: disabled pos: right res: 1600x900 hz: 60 size: N/A
    modes: max: 1024x768 min: 640x480
  API: EGL v: 1.5 hw: drv: nvidia platforms: device: 0 drv: nvidia device: 2 drv: swrast gbm:
    drv: nvidia surfaceless: drv: nvidia x11: drv: nvidia inactive: wayland,device-1
  API: OpenGL v: 4.6.0 compat-v: 4.5 vendor: nvidia mesa v: 580.126.09 glx-v: 1.4
    direct-render: yes renderer: NVIDIA GeForce GTX 1660 Ti/PCIe/SSE2
  API: Vulkan v: 1.3.275 layers: 9 surfaces: xcb,xlib device: 0 type: discrete-gpu driver: N/A
    device-ID: 10de:2182 device: 1 type: cpu driver: N/A device-ID: 10005:0000
Audio:
  Device-1: Intel 200 Series PCH HD Audio vendor: Gigabyte driver: snd_hda_intel v: kernel
    bus-ID: 00:1f.3 chip-ID: 8086:a2f0 class-ID: 0403
  Device-2: NVIDIA TU116 High Definition Audio vendor: eVga.com. driver: snd_hda_intel v: kernel
    pcie: speed: 8 GT/s lanes: 16 bus-ID: 01:00.1 chip-ID: 10de:1aeb class-ID: 0403
  Device-3: Universal Audio Volt 1 driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 bus-ID: 1-12:5 chip-ID: 2b5a:0020 class-ID: 0300 serial: <filter>
  Device-4: GYROCOM C&C Fiio E10 driver: hid-generic,snd-usb-audio,usbhid type: USB rev: 1.1
    speed: 12 Mb/s lanes: 1 bus-ID: 1-9:3 chip-ID: 1852:7022 class-ID: 0102
  API: ALSA v: k6.17.0-14-generic status: kernel-api
  Server-1: PipeWire v: 1.0.5 status: active with: 1: pipewire-pulse status: active
    2: wireplumber status: active 3: pipewire-alsa type: plugin
Network:
  Device-1: Qualcomm Atheros Killer E2500 Gigabit Ethernet vendor: Gigabyte driver: alx v: kernel
    pcie: speed: 2.5 GT/s lanes: 1 port: d000 bus-ID: 06:00.0 chip-ID: 1969:e0b1 class-ID: 0200
  IF: enp6s0 state: down mac: <filter>
  Device-2: Intel Wireless 7265 driver: iwlwifi v: kernel pcie: speed: 2.5 GT/s lanes: 1
    bus-ID: 0b:00.0 chip-ID: 8086:095a class-ID: 0280
  IF: wlp11s0 state: up mac: <filter>
  IF-ID-1: docker0 state: down mac: <filter>
  IF-ID-2: nordlynx state: unknown speed: N/A duplex: N/A mac: N/A
Bluetooth:
  Device-1: Intel Bluetooth wireless interface driver: btusb v: 0.8 type: USB rev: 2.0
    speed: 12 Mb/s lanes: 1 bus-ID: 1-13:6 chip-ID: 8087:0a2a class-ID: e001
  Report: hciconfig ID: hci0 rfk-id: 0 state: up address: <filter> bt-v: 4.2 lmp-v: 8 sub-v: 1100
    hci-v: 8 rev: 1100 class-ID: 7c0104
Drives:
  Local Storage: total: 3.85 TiB used: 2.06 TiB (53.4%)
  ID-1: /dev/sda vendor: Western Digital model: WDS500G2B0B-00YS70 size: 465.76 GiB
    speed: 6.0 Gb/s tech: SSD serial: <filter> fw-rev: 00WD scheme: GPT
  ID-2: /dev/sdb vendor: SanDisk model: SDSSDHP256G size: 238.47 GiB speed: 6.0 Gb/s tech: SSD
    serial: <filter> fw-rev: 6RL scheme: MBR
  ID-3: /dev/sdc vendor: Kingston model: SA400S37480G size: 447.13 GiB speed: 6.0 Gb/s tech: SSD
    serial: <filter> fw-rev: 60.1 scheme: GPT
  ID-4: /dev/sdd vendor: Western Digital model: WD30EZRX-00SPEB0 size: 2.73 TiB speed: 6.0 Gb/s
    tech: HDD rpm: 5400 serial: <filter> fw-rev: 0A80 scheme: GPT
Partition:
  ID-1: / size: 456.89 GiB used: 298.84 GiB (65.4%) fs: ext4 dev: /dev/sda2
  ID-2: /boot/efi size: 511 MiB used: 6.1 MiB (1.2%) fs: vfat dev: /dev/sda1
Swap:
  ID-1: swap-1 type: file size: 2 GiB used: 1.96 GiB (98.1%) priority: -2 file: /swapfile
USB:
  Hub-1: 1-0:1 info: hi-speed hub with single TT ports: 16 rev: 2.0 speed: 480 Mb/s lanes: 1
    chip-ID: 1d6b:0002 class-ID: 0900
  Device-1: 1-9:3 info: GYROCOM C&C Fiio E10 type: HID,audio
    driver: hid-generic,snd-usb-audio,usbhid interfaces: 4 rev: 1.1 speed: 12 Mb/s lanes: 1
    power: 500mA chip-ID: 1852:7022 class-ID: 0102
  Device-2: 1-10:4 info: Corsair M95 Gaming Mouse type: mouse,keyboard driver: hid-generic,usbhid
    interfaces: 3 rev: 2.0 speed: 12 Mb/s lanes: 1 power: 100mA chip-ID: 1b1c:1b06 class-ID: 0300
  Device-3: 1-12:5 info: Universal Audio Volt 1 type: audio,HID
    driver: hid-generic,snd-usb-audio,usbhid interfaces: 7 rev: 2.0 speed: 480 Mb/s lanes: 1
    chip-ID: 2b5a:0020 class-ID: 0300 serial: <filter>
  Device-4: 1-13:6 info: Intel Bluetooth wireless interface type: bluetooth driver: btusb
    interfaces: 2 rev: 2.0 speed: 12 Mb/s lanes: 1 power: 100mA chip-ID: 8087:0a2a class-ID: e001
  Hub-2: 2-0:1 info: super-speed hub ports: 10 rev: 3.0 speed: 5 Gb/s lanes: 1 chip-ID: 1d6b:0003
    class-ID: 0900
  Hub-3: 3-0:1 info: hi-speed hub with single TT ports: 2 rev: 2.0 speed: 480 Mb/s lanes: 1
    chip-ID: 1d6b:0002 class-ID: 0900
  Hub-4: 4-0:1 info: super-speed hub ports: 4 rev: 3.1 speed: 10 Gb/s lanes: 1 chip-ID: 1d6b:0003
    class-ID: 0900
  Hub-5: 5-0:1 info: hi-speed hub with single TT ports: 2 rev: 2.0 speed: 480 Mb/s lanes: 1
    chip-ID: 1d6b:0002 class-ID: 0900
  Device-1: 5-2:3 info: Keychron Link type: mouse,keyboard,HID driver: hid-generic,usbhid
    interfaces: 4 rev: 2.0 speed: 12 Mb/s lanes: 1 power: 100mA chip-ID: 3434:d031 class-ID: 0300
  Hub-6: 6-0:1 info: super-speed hub ports: 2 rev: 3.1 speed: 10 Gb/s lanes: 1 chip-ID: 1d6b:0003
    class-ID: 0900
Sensors:
  System Temperatures: cpu: 54.0 C mobo: N/A gpu: nvidia temp: 53 C
  Fan Speeds (rpm): N/A gpu: nvidia fan: 51%
Repos:
  Packages: 2745 pm: dpkg pkgs: 2706 pm: flatpak pkgs: 39
  No active apt repos in: /etc/apt/sources.list
  Active apt repos in: /etc/apt/sources.list.d/docker.list
    1: deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https: //download.docker.com/linux/ubuntu zara stable
  Active apt repos in: /etc/apt/sources.list.d/nordvpn-app.list
    1: deb https: //repo.nordvpn.com/deb/nordvpn/debian stable main
  Active apt repos in: /etc/apt/sources.list.d/official-package-repositories.list
    1: deb http: //packages.linuxmint.com zara main upstream import backport
    2: deb http: //archive.ubuntu.com/ubuntu noble main restricted universe multiverse
    3: deb http: //archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse
    4: deb http: //archive.ubuntu.com/ubuntu noble-backports main restricted universe multiverse
    5: deb http: //security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse
  Active apt repos in: /etc/apt/sources.list.d/opera-stable.list
    1: deb https: //deb.opera.com/opera-stable/ stable non-free
  Active apt repos in: /etc/apt/sources.list.d/qbittorrent-team-qbittorrent-stable-noble.list
    1: deb [signed-by=/etc/apt/keyrings/qbittorrent-team-qbittorrent-stable-noble.gpg] https: //ppa.launchpadcontent.net/qbittorrent-team/qbittorrent-stable/ubuntu noble main
  Active apt repos in: /etc/apt/sources.list.d/teejee2008-foss-noble.list
    1: deb [signed-by=/etc/apt/keyrings/teejee2008-foss-noble.gpg] https: //ppa.launchpadcontent.net/teejee2008/foss/ubuntu noble main
  Active apt repos in: /etc/apt/sources.list.d/ubuntuhandbook1-conkymanager2-noble.list
    1: deb [signed-by=/etc/apt/keyrings/ubuntuhandbook1-conkymanager2-noble.gpg] https: //ppa.launchpadcontent.net/ubuntuhandbook1/conkymanager2/ubuntu noble main
  Active apt repos in: /etc/apt/sources.list.d/vivaldi.list
    1: deb [arch=amd64] https: //repo.vivaldi.com/stable/deb/ stable main
  Active apt repos in: /etc/apt/sources.list.d/docker.sources
    1: deb https: //download.docker.com/linux/ubuntu noble stable
Info:
  Memory: total: 16 GiB available: 15.56 GiB used: 12.34 GiB (79.3%)
  Processes: 400 Power: uptime: 1d 23h 11m states: freeze,mem,disk suspend: deep wakeups: 0
    hibernate: platform Init: systemd v: 255 target: graphical (5) default: graphical
  Compilers: gcc: 13.3.0 Client: Cinnamon v: 6.4.8 inxi: 3.3.34
 


That symptom (“W keeps moving until I press something else”) almost always means the key release event is getting lost or delayed somewhere between:

keyboard → USB/HID driver → X11/libinput → game (SDL/Wine/Proton)

Because it happens with another keyboard too, I’d focus on USB power management / USB resets / kernel regression / system hitching rather than the Keychron itself.

Below is a practical way to pin down where it breaks, then the most common fixes.


1) Verify whether Linux is missing the key-release event (kernel level)​

Option A:​

Code:
sudo apt update
sudo apt install -y evtest
sudo evtest
Pick the keyboard device (not the “mouse” one), then reproduce the problem.
  • If you see KEY_W down but no KEY_W up when the “stuck” happens → it’s USB/HID/kernel/power.
  • If you do see the KEY_W up reliably → the issue is higher up (X11/DE/game/Proton).

Option B: libinput (what X11 typically uses)​

Code:
sudo apt install -y libinput-tools
sudo libinput debug-events --show-keycodes

2) Watch for USB disconnect/reset exactly when it happens​

In another terminal while gaming:

Code:
sudo journalctl -kf
Look for lines like:
  • usb X-Y: reset ...
  • usb X-Y: device descriptor read/64, error ...
  • hid-generic ...
  • xhci_hcd ...
If you see resets at the same moment: it’s almost certainly USB power/port/hub/interference.


3) Disable USB autosuspend (very common cause of “stuck keys”)​

First check current autosuspend:

Code:
cat /sys/module/usbcore/parameters/autosuspend

Quick test (temporary, until reboot)​

Code:
echo -1 | sudo tee /sys/module/usbcore/parameters/autosuspend

More targeted (recommended): disable power saving just for the keyboard dongle/device​

Your USB list shows Keychron Link as 3434:d031. Create a udev rule:

Code:
sudo tee /etc/udev/rules.d/99-keychron-usb-power.rules >/dev/null <<'EOF'
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="3434", ATTR{idProduct}=="d031", TEST=="power/control", ATTR{power/control}="on"
EOF

sudo udevadm control --reload-rules
sudo udevadm trigger
If the other keyboard has a different VID: PID, do the same for it (find with lsusb).

If you use TLP or Powertop auto-tune, they can re-enable autosuspend. If installed, temporarily disable them to test:
Code:
sudo systemctl disable --now tlp 2>/dev/null || true

4) If you’re using wireless (Keychron “Link” suggests 2.4GHz dongle): eliminate USB3 interference​

2.4GHz receivers commonly glitch near USB3 ports/cables (RF noise). Do all of these tests:

  • Put the receiver on a USB 2.0 port (often the black ports)
  • Use a short USB extension cable to move the receiver away from the PC case
  • Try a rear I/O port (direct motherboard), not front-panel ports/hubs
  • As a control: test the keyboard wired for a session
If wired fixes it, it’s not Linux drivers it’s RF/USB topology.


5) Your kernel stands out:​

Linux Mint 22.x (Ubuntu 24.04 base) normally ships with 6.8-series kernels. A 6.17 kernel suggests you’re on a newer/mainline/HWE track and could be hitting a regression in HID/USB.

Strong diagnostic step: boot an older, known-good kernel (e.g., the Mint/Ubuntu default 6.8) and test.

  • Reboot → GRUB → Advanced options → pick an older kernel if available.
  • Or install the standard kernel meta packages (Mint/Ubuntu default track):
Code:
sudo apt install -y linux-image-generic linux-headers-generic
If the issue disappears on the older kernel, you’ve essentially proven “kernel regression” and can stick to the stable kernel for gaming.


6) Check for system hitching due to memory pressure (your swap is basically full)​

You have a 2 GiB swapfile at ~98% used and 16 GiB RAM at ~79%. Under load, heavy swapping can cause input processing to “bunch up,” and some games behave exactly like “stuck until next event”.

Quick checks while gaming:
Code:
free -h
vmstat 1
If you see lots of swap-in/out (si/so) spikes during the moments it happens:

Fix ideas:
  • Increase swap (quick band-aid), or
  • Enable zram (often better for gaming responsiveness)

7) If kernel-level events are fine, isolate X11/DE/game layer​

If evtest shows clean press+release but the game still “sticks”:
  • Try running the game with the compositor effects reduced / fullscreen true fullscreen
  • Try a different session type (if available): Wayland session vs X11 (mostly as a diagnostic)
  • If it’s Proton/Wine, test a native game or a different runner to see if it’s confined to one stack

What I’d bet on given your data​

  1. USB autosuspend / power management OR
  2. Wireless dongle + USB3 interference OR
  3. Kernel regression (6.17)
    …and a secondary contributor could be swap pressure.
If you run evtest and paste the few lines around a “stuck” event (showing whether the KEY_W up appears), I can tell you immediately which branch (USB/kernel vs game/X11) you’re on and the shortest fix path.
 
I have gone in and run some tests on this. I tried to roll back the kernel, since I was feeling this to be a kernel issue based on the monitoring from evtest. Upon rolling back, it seemed to be fine but then the D key got "stuck" while playing the Hoop Land demo. I disabled USB autosuspend and have not had time to test much today. Hopefully this works, will report back when I get some more time to test!
 
Sad to report that after some testing I am still having the same issue as before. Playing the Hoop Land demo (which has become my test of choice because it boots quickly) I had the 'S' key get stuck down during my game. Hopefully somebody has gotten this figure out, I miss playing games!
 
in wine on steam how are you playing the game
 
Steam is using Proton 10.0-4 system wide, do you recommend I try a different version?
 
You can definitely try another Proton version, yes but at this point I’d use it more as a diagnostic test than a guaranteed fix.

Since you already said it still happened after rolling back the kernel (even if it seemed better at first), that makes it less likely to be only a kernel issue.

Also, because you’re using Proton, I can rule out “Steam running inside Wine” as the cause (that was why I asked how you were launching it). I still want to narrow down the Steam side though:
  • Are you using native Steam (regular package install), or
  • Flatpak Steam?
Reason I ask: Flatpak can sometimes add another layer / input quirk, so it’s worth knowing.

For Proton testing, I’d try:
  • Proton Experimental
  • Proton 9.x
  • maybe Proton GE (if you already use GE)
If it happens on all of them, that points even more toward the input path (USB/HID/wireless interference) and not Proton itself.

Also, are you using the Keychron in:
  • 2.4 GHz dongle mode
  • Bluetooth
  • or wired?
If it’s 2.4 GHz, I’d strongly test:
  • rear USB 2.0 port (not USB 3.x)
  • short extension cable to move the dongle away from the case
  • one session fully wired as a control test
Since evtest already suggested input-level weirdness, it still sounds like a key-release event is getting lost before the game handles it.

If you want to do one extra “weird” test (not as a real fix, just for troubleshooting), you could try installing Steam in Wine and launching the game that way to see if the same stuck-key behavior still happens there too. I would not treat that as a solution just a test to compare behavior across stacks.

That kind of result can help narrow down whether this is Proton-specific, Steam-runtime-related, or lower-level input trouble.

This is a old Video but it still the best one i have about how to do it if you dont know how to just know a lot has change over the last 4 years

 
I am on the native Steam install, and I am testing out the Proton Hotfix. I just played for about 20 minutes of Hoop Land and didn't run into the issue, but further testing is still needed.

As far as they keyboard is concerned, I am running it off the wireless dongle. It is a USB-C dongle, so I don't have the option of plugging it into a USB 2.0 port. I can test running it wired, but that was when the issue first came to my attention, so I switched to wireless. Will test wired and report back.

I don't think this is a steam issue, but I will test games installed through other sources to narrow this down. Thanks for all the suggestions up to this point!
 
@Nandor
Sorry but I saw you deleted your post so I deleted mine as well because it was hanging.

I'm not mod to tutor you but here it's custom that each user has it's own thread even if the issue is same.
The OP of this thread is unlikely to come back with solution, and people don't have same hardware/software, who ever want to help want to work with most recent software/hardware info.
 
@Nandor
Sorry but I saw you deleted your post so I deleted mine as well because it was hanging.

I'm not mod to tutor you but here it's custom that each user has it's own thread even if the issue is same.
The OP of this thread is unlikely to come back with solution, and people don't have same hardware/software, who ever want to help want to work with most recent software/hardware info.

Haha, weird because I only deleted mine because the post of yours that I quoted disappeared and I assumed you deleted it.

Fair enough, I'll go ahead and start my own thread on this and delete the posts I've put here. Thanks!
 


Follow Linux.org

Members online

No members online now.

Top