Update: SDL3/Wayland branch merged to main, GH release bin updated along with AUR packages.
There’s no good standalone controller-driven on-screen keyboard on Linux. Steam’s keyboard requires Steam running. Other virtual keyboards (Onboard, Florence) need a mouse pointer or are dead projects. I wanted something that takes D-pad and stick input directly, like a console, but can be launched independently of specific games or platforms.
So I built one written in Go with SDL3 and native Wayland layer-shell support. It works as a daemon with a configurable controller combo to toggle show/hide. AUR packages ( gamepad-osk-git , gamepad-osk-bin are updated to v2.
If you’re on Wayland with a gamepad, I’d appreciate testers. Bug reports and PRs welcome. Wayland testers still welcome - especially GNOME (falls back to standard window, no layer-shell). Bug reports and PRs welcome.

Features :
- Full QWERTY with shortcuts row (undo, redo, cut, copy, paste, select all, Alt+Tab, media keys)
- D-pad navigation with stick-driven mouse cursor
- Modifier support (Shift, Ctrl, Alt, Super, Caps) with visual status indicators
- Button-hold key repeat for backspace, space, enter
- Alt+Tab key for multiple Tab presses
- Auto-reconnect on controller disconnect/timeout
- Configurable button mapping, 60 themes, adjustable opacity
- Sub-1% CPU idle, under 4% during active input



Jesus christ… the developer of useful linux program getting downvoted for explaining things…
Lemmy is fulll of entitled chilren who think they are morally superior to redditors…
It’s really undeserved, especially since the dev went out of their way to write a detailed install procedure for Bazzite. I just gave them an upvote on that comment, but I wish I gave them one sooner.