mirror-kde-plasma-desktop/kcms/keyboard
Tobias Fella dc7b9473f7 kcms/keyboard: Refactor and fix LayoutDialog
The list had a few problems, notably an erratic sorting that randomly change during and after searching for a layout.
While at it, refactor some code and port the models to C++.
2026-11-03 09:46:31 +00:00
..
tastenbrett Fix automoc warnings 2026-10-02 03:30:01 -04:00
tests kcms/keyboard: Rename x11_helper 2026-06-08 15:55:07 +02:00
ui kcms/keyboard: Refactor and fix LayoutDialog 2026-11-03 09:46:31 +00:00
bindings.cpp kcms/keyboard: Rename x11_helper 2026-06-08 15:55:07 +02:00
bindings.h [kcms/keyboard] Make Rules a singleton 2024-06-01 12:49:19 +00:00
CMakeLists.txt kcms/keyboard: Refactor and fix LayoutDialog 2026-11-03 09:46:31 +00:00
flags.cpp kcms/keyboard: Rename x11_helper 2026-06-08 15:55:07 +02:00
flags.h [kcms/keyboard] Make Rules a singleton 2024-06-01 12:49:19 +00:00
iso_codes.cpp Fix some cppcheck: 2025-12-21 09:29:09 +00:00
iso_codes.h kcms/keyboard: Port to isocode lookup to QStandardDirs 2023-01-10 10:33:06 +00:00
kcm_keyboard.cpp Fix automoc warnings 2026-10-02 03:30:01 -04:00
kcm_keyboard.h kcms/keyboard: port LayoutModel to QML declarative 2025-05-31 14:58:33 -04:00
kcm_keyboard.json SVN_SILENT made messages (.desktop file) - always resolve ours 2026-10-05 01:51:33 +00:00
kcmmain.cpp [kcms/keyboard] Rename keyboard.json to kcm_keyboard.json 2021-12-21 15:58:59 +01:00
keyboard_config.cpp Fix automoc warnings 2026-10-02 03:30:01 -04:00
keyboard_config.h kcms/keyboard: Drop dead code 2026-06-05 12:35:53 +02:00
keyboardmiscsettings.kcfg kcms/keyboard: Increase maximum repeat rate 2024-06-26 22:44:18 +00:00
keyboardmiscsettings.kcfgc Port keyboard KCM to QML 2024-04-13 20:16:44 +00:00
keyboardmodel.cpp Fix automoc warnings 2026-10-02 03:30:01 -04:00
keyboardmodel.h kcm/keyboard: port KeyboardModel to qml declarative 2025-05-31 14:58:33 -04:00
keyboardsettings.kcfg Revert "KCM Keyboard: resetOlbXkbOptions should not be a kconfig entry" 2021-12-28 12:16:38 +01:00
keyboardsettings.kcfgc kcms/keyboard: use KConfig::Notify instead of custom DBus signals for layout config changes 2025-06-03 08:56:01 -06:00
layoutmodel.cpp kcms/keyboard: Refactor and fix LayoutDialog 2026-11-03 09:46:31 +00:00
layoutmodel.h kcms/keyboard: Refactor and fix LayoutDialog 2026-11-03 09:46:31 +00:00
layoutsearchmodel.cpp kcms/keyboard: Refactor and fix LayoutDialog 2026-11-03 09:46:31 +00:00
layoutsearchmodel.h kcms/keyboard: Refactor and fix LayoutDialog 2026-11-03 09:46:31 +00:00
layoutunit.cpp kcms/keyboard: Rename x11_helper 2026-06-08 15:55:07 +02:00
layoutunit.h kcms/keyboard: Rename x11_helper 2026-06-08 15:55:07 +02:00
Messages.sh [kcms/keyboard] Fix translations 2024-04-14 09:45:01 +00:00
README Fix various typos 2021-12-01 10:22:09 -05:00
shortcuthelper.cpp Fix automoc warnings 2026-10-02 03:30:01 -04:00
shortcuthelper.h Port keyboard KCM to QML 2024-04-13 20:16:44 +00:00
tastenbrett.cpp Convert licsense headers to SPDX 2021-06-25 10:36:06 +00:00
tastenbrett.h port all headers to pragma once 2022-12-17 14:18:42 +00:00
TODO Initial import from the monolithic kde-workspace. 2014-03-31 04:23:39 +02:00
types.h kcms/keyboard: Refactor and fix LayoutDialog 2026-11-03 09:46:31 +00:00
userlayoutmodel.cpp Fix automoc warnings 2026-10-02 03:30:01 -04:00
userlayoutmodel.h keyboard kcm: make LayoutDialog useful for mobile KCM 2025-10-30 09:35:21 +01:00
variantsmodel.cpp kcms/keyboard: Refactor and fix LayoutDialog 2026-11-03 09:46:31 +00:00
variantsmodel.h kcms/keyboard: Refactor and fix LayoutDialog 2026-11-03 09:46:31 +00:00
workspace_options.kcfgc Port keyboard KCM to QML 2024-04-13 20:16:44 +00:00
xkb_rules.cpp kcms/keyboard: Drop dead code 2026-06-08 15:55:07 +02:00
xkb_rules.h kcms/keyboard: Drop dead code 2026-06-08 15:55:07 +02:00
xkboptionsmodel.cpp Fix automoc warnings 2026-10-02 03:30:01 -04:00
xkboptionsmodel.h kcms/keyboard: Drop X11 code 2026-06-04 14:59:05 +02:00

This is new project to replace keyboard (kcmmisc) and kxkb 
to manage keyboard hardware configuration and layouts.

Components:

kcm_init:
* no kcm_init - all initialization (including after keyboard hot-plug) is done by kded daemon

Keyboard daemon:
* configures keyboard layouts on start
* provides DBUS API "org.kde.KXKB/kxkb"
* listens to window/desktop switching if layout switch mode is not global
* listens to new keyboard devices and reinitializes keyboard layouts and hardware settings
* listens to Global KDE Shortcut to switch layouts
* listens to Global Shortcut settings change
* listens to keyboard configuration changes
* provides systray icon for layout

Keyboard applet:
* displays current layout with text and (optionally flag)
* allows to toggle layouts by click or set them with context menu

Layout widget:
* displays current layout with text embedded in another widget (e.g. lock dialog)
* currently only short text (no flag or long text)
* dynamically loaded as a plugin

KCM Module:
* allows to configure keyboard hardware, layouts and xkb options (advanced)

Advantages (over old code):
* One UI module to configure keyboard layouts and hardware
* Allows to configure keyboard model/xkb options without configuring layouts
* Less cluttered layout configuration control (add layout is separate)
* Layout control/DBus interface is separate from the indicator
* Does not require libxklvier
* Takes language names from iso-codes project
* Takes country names/translations from xkeyboard-config project
* Information about current layouts is always taken from X server, so should be more robust
* Cleaner code (rewritten from scratch)
* Due to many points above should start faster (though no benchmarks performed)

New features:
* Allow selection of keyboard layout by language