Layouts, iPad-style rendering, taps, shift and layers

- JSON layouts (en-US, sv-SE inheriting number/symbol layers via base)
- LayoutModel + KeyGeometry: proportional rows, nearest-key hit testing
- KeyboardSurface: multi-pointer touch/mouse routing to the controller
- KeyboardController + ShiftState: iOS shift/caps-lock, layers, globe, dismiss
- QML view with light/dark iPad palette and drag handle
- DevHooks: SLOPOSK_AUTOTYPE, SLOPOSK_SCREENSHOT for headless checks
- Unit tests for shift, loader, geometry and controller

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-14 14:50:21 +02:00
co-authored by Claude Opus 5.5
parent cdef9b4ad0
commit be14bbcc62
35 changed files with 1970 additions and 65 deletions
+19
View File
@@ -0,0 +1,19 @@
pragma Singleton
import QtQuick
// iPad keyboard palette; follows the system light/dark preference.
QtObject {
readonly property bool dark: Qt.styleHints.colorScheme === Qt.ColorScheme.Dark
readonly property color background: dark ? "#2c2c2e" : "#d1d3d9"
readonly property color characterKey: dark ? "#6b6b6e" : "#ffffff"
readonly property color functionKey: dark ? "#464649" : "#abb0bc"
readonly property color keyShadow: dark ? "#141416" : "#88898d"
readonly property color text: dark ? "#ffffff" : "#000000"
readonly property color secondaryText: dark ? "#a5a5aa" : "#8a8a8e"
readonly property color handle: dark ? "#8e8e93" : "#7c7c80"
readonly property real windowRadius: 14
readonly property real keyRadius: 6
}