This proposal was elected by the community as one of the KDE Goals from 2024-2026. Coordinate further progress on our wiki page and join the discussion in #kde-input:kde.org (our Matrix room).
Description
KDE has a large and diverse user base. The input stack affects every user, each with different requirements. For example, the artist community relies on support for drawing tablets. Users from many different countries, speaking many different languages, use writing systems that require input method (IME) support. Users with accessibility needs rely on the input stack to be a11y friendly. Users with different devices - desktop PC, laptops, 2-in-1s, tablets - all have unique requirements.
Plasma and the KDE/Qt ecosystem already provide robust support for input devices and customization. Recent improvements include support for remote control and Input Leap on Wayland, modifier-only shortcuts and key bindings, and keyboard RGB backlights syncing with Plasma’s accent color. This goal aims to identify and close the last significant gaps, taking the input experience from decent to universally delightful. From developers with fancy shortcuts to gamers with fancy mice, every voice should be heard because we care about your INPUT!
What it will take
General approach
- Organize missing features, bugs, wishlist items, GitLab issues and ongoing work in a Wiki page, similar to the Wayland showstopper page was done.
- Research topics that might not have been fully explored. Blog about the findings to educate users and developers, spur discussions, and inspire contributions from the wider community.
- Reach out to people with special hardware (like tablets, gaming mice etc…) so patches can be tested on a variety of hardware.
- Reach out to interested developers to coordinate work commitments. Stay on top of submitted MRs to make sure they get reviewed in a timely fashion. Get improvements merged.
Listed below are some areas that will need special attention. More may be identified over time. In addition to new functionality, this goal also encompasses continuous work on related UX improvements and bug fixes.
Drawing tablet
Learn about and implement the features that artists need in order for the Wayland tablet stack to catch up to the X11 stack and surpass it. We have some excellent starting points:
- David Revoy has an insightful write-up of what's missing from early Plasma 6.0, and is often willing to help with feedback and testing.
- KDE developer @redstrate has created a web page about the status of drawing tablets on Plasma Wayland.
Mouse and Touchpad
- Implement missing features exposed by libinput, like custom acceleration profiles and disabling the touchpad when a mouse is plugged in.
- Allow customization of 3-finger and 4-finger touchpad gestures, including pinch and rotate gestures.
- Implement relevant touchpad gestures into apps that could benefit from them but currently lack them.
- Implement stroke actions a.k.a. mouse gestures for Wayland, providing a full replacement for mouse gesture support in KHotKeys which was only available for X11 and discontinued in Plasma 6.
- Allow setting per-device key bindings for mouse devices, as the placement of extra buttons can differ between models.
Keyboard
- Make it easy to re-bind keyboard keys globally (e.g "Ugh my laptop has this dumb Copilot key, how do I make it a Ctrl key?").
- Make keyboard-only navigation work well across apps and desktop. Also relevant: navigation with game controller inputs (see below).
- Unify standard shortcuts across Qt Widgets and Qt Quick apps. See Felix Ernst's blog post on F10 menu access for an example and why this is important.
Virtual Keyboard
In recent years, KDE has relied heavily on the Maliit virtual keyboard. It's time to reevaluate. Some discussion has already started here: https://mail.kde.org/pipermail/plasma-devel/2024-June/123435.html
- Bring this proof of concept to production readiness and include it with Plasma by default.
- Make sure that it is fully accessible also by mouse input, by changing the virtual keyboard applet from being a toggle to switching between three states (disabled/touch only/always enabled).
Better IME support
David Edmundson in 2023 published a blog post about the state of input methods on Wayland, as well as ideas for new input methods such as:
- Speech to text
- Selecting diacritic variations of a given letter
- Quick emoji input
- Language translation
- Convenient access to clipboard contents
Other promising ideas:
- AI assistants are available nowadays for spelling and phrasing improvements, as well as auto-completion of texts
- Instant handwriting digitization when writing with a stylus on a 2-in-1 laptop
- Use mouse or touchpad to draw non-alphabetic characters (perhaps sharing stroke recognition code from above)
- Expand configurable strings into pre-defined snippets
The sky's the limit. In order to bring this to end users, we want to:
- Support running multiple IMEs at the same time.
- Work on packaging, integration and general polish of some of these IMEs.
- Participate in relevant Wayland protocol discussions.
- Ensure that KDE provides all infrastructure that allows CJK input methods to work flawlessly on KWin/Wayland and Plasma.
Game Controllers as primary input device
Plasma ships as "Desktop Mode" of SteamOS. However, navigating the desktop and KDE's apps without the Steam Deck's trackpads is not currently a pleasant experience. Improving support for game controller input will strengthen KDE's position as the leading free desktop environment for gaming. Related KDE software such as Plasma Bigscreen or apps for mobile devices can also benefit from improvements in this area.
- Handle game controllers in KWin directly, implementing mouse emulation and preventing sleep when controller input is recognized. Implement and contribute to related Wayland protocols.
- Work with Plasma and app developers on navigation with a limited set of inputs. Users should be able to navigate the desktop and most consumer-facing software with arrow keys, a Back button, an A (enter/select) button and a menu button. Components and the Breeze theme should offer clear visual cues about focus and possible actions.
- Ensure that users can authenticate with controller input to KDE's preferred login manager (currently SDDM) and lock screen (KScreenLocker).
Modern games switch from keyboard/mouse to "controller mode" as soon as controller input is detected. We can take a similar approach if required.
a11y
Some of the above focus areas are directly relevant to accessibility concerns, including keyboard-only navigation and input methods, in particular speech to text.
Matt Campbell through GNOME and STF has been pushing for a new Wayland-native accessibility stack. While not purely input-related, KDE needs to stay on top of these developments and ensure that screen readers (notably Orca) work well with KDE software regardless of whether users access it via mouse, keyboard, touchscreen, tablet or game controller.
App-specific work
- Provide a drawing feature in Okular to add a handwritten signature to a document.
- Extend Keychain to provide an IME for auto-filling passwords in desktop apps.
How we know we succeeded
When we're happy enough with the input stack to move on to other undertakings instead.
- Drawing tablet: The artist community is happy with the state of drawing tablet capabilities under KWin/Wayland.
- Mouse and touchpad: New user reports of missing or unintuitive functionality become exceedingly rare.
- Virtual Keyboard: Plasma ships with a virtual keyboard that can fully replace keyboards for users with only mouse and/or touchscreen input.
- Better IME support: At least one new input method (other than the virtual keyboard) ships with Plasma and/or is available on Flathub.
- Game Controllers: A user can intuitively proceed from boot to login manager, desktop and game launcher into a game of their choice, and switch between game & desktop using the controller's menu button.
Relevant links
- David Revoy on Plasma/Wayland for artists: https://www.davidrevoy.com/article1030/debian-12-kde-plasma-2024-install-guide
- Drawing tablets on KDE Wayland: https://artonwayland.redstrate.com/
- libinput developer documentation: https://wayland.freedesktop.org/libinput/doc/latest/development.html
- KWin issue on touch gestures: https://invent.kde.org/plasma/kwin/-/issues/59
- KWin issue on mouse gestures: https://invent.kde.org/plasma/kwin/-/issues/216
- Plasma issue on a single unified Mouse & Touchpad KCM: https://invent.kde.org/plasma/plasma-desktop/-/issues/117
- Virtual keyboard proof of concept based on the Qt Virtual Keyboard API: https://mail.kde.org/pipermail/plasma-devel/2024-June/123435.html
- David Edmundson on ideas for Wayland input methods: https://blog.davidedmundson.co.uk/blog/new-ideas-using-wayland-input-methods/ (incl. input method playground)
- Espanso text expander: https://espanso.org/ (also see @wstyler's more detailed text snippet expansion goal proposal for KDE)
- Long-standing bug about preventing system sleep while gaming: https://bugs.kde.org/show_bug.cgi?id=328987
- Draft game-controller-v1 Wayland protocol: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/244
- Draft inputfd Wayland protocol (direct input device access via file handles): https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/110
- Matt Campbell on the new accessibility architecture for Wayland: https://blogs.gnome.org/a11y/2024/06/18/update-on-newton-the-wayland-native-accessibility-project/
- Felix Ernst on making F10 for menu access work everywhere: https://wordsmith.social/felix-ernst/f10-for-accessibility-in-kf6
- Eike Hein's talk on Input Methods and open issues in Plasma: https://youtu.be/wE0KDabPfsQ?si=fILM48osyediy_l
Champions
The team is:
I am willing to put work into this
- @ngraham
- @davidedmundson
- @apol
- @akselmo
- @zamundaaa
- @nicolasfella
- @wstyler
- @tusooaw : I have a 2-in-1 (tablet/laptop with a touchscreen), a graphic tablet, use input methods (fcitx) and contributed to maliit-keyboard.
- @hein
- @tduck
- @nclarius
- @rutledge