- 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>
35 lines
857 B
QML
35 lines
857 B
QML
import QtQuick
|
|
import Sloposk
|
|
|
|
Window {
|
|
id: root
|
|
|
|
required property LayoutModel layoutModel
|
|
required property KeyboardController controller
|
|
property var placement: null // FloatingWindow, set from C++
|
|
|
|
width: 1000
|
|
height: 340
|
|
visible: false
|
|
color: "transparent"
|
|
|
|
Rectangle {
|
|
anchors.fill: parent
|
|
radius: Theme.windowRadius
|
|
color: Theme.background
|
|
|
|
Keyboard {
|
|
anchors { left: parent.left; right: parent.right; top: parent.top; bottom: handle.top }
|
|
anchors.margins: 2
|
|
model: root.layoutModel
|
|
controller: root.controller
|
|
}
|
|
|
|
DragHandle {
|
|
id: handle
|
|
anchors { left: parent.left; right: parent.right; bottom: parent.bottom }
|
|
onMoved: (dx, dy) => root.placement?.moveBy(dx, dy)
|
|
}
|
|
}
|
|
}
|