Report unavailable protocols and services; send combos as real keys

Diagnostics collects what this session doesn't allow, logs it, and lists
it in the settings panel (with a dot on the gear): KWin not launching
sloposk as its keyboard (detected by WAYLAND_SOCKET, since KWin offers the
input-method global to every client), fake input missing or too old,
org.kde.keyboard unreachable, and the D-Bus control name taken.

Modifier combos go through fake input even in text fields: KWin drops
the input method's modifier mask for most clients, so Ctrl+A typed "a".

The desktop file is generated with an absolute Exec, which KWin needs to
match it: one for the installed binary, one for the build's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-15 11:36:56 +02:00
co-authored by Claude Opus 5.5
parent 6164839886
commit 499e5ee76e
21 changed files with 362 additions and 104 deletions
+3
View File
@@ -7,6 +7,7 @@ Window {
required property LayoutModel layoutModel
required property KeyboardController controller
required property Settings settings
required property Diagnostics diagnostics
property var placement: null // FloatingWindow, set from C++
property bool settingsOpen: false
// Height of the key area, for C++ keeping key sizes when rows change.
@@ -58,6 +59,7 @@ Window {
visible: root.settingsOpen
settings: root.settings
layoutModel: root.layoutModel
diagnostics: root.diagnostics
}
DragHandle {
@@ -69,6 +71,7 @@ Window {
SettingsButton {
anchors { left: parent.left; leftMargin: 8; bottom: parent.bottom }
checked: root.settingsOpen
alert: root.diagnostics.problems.length > 0
onClicked: root.settingsOpen = !root.settingsOpen
}