OSDN Git Service

[keyboardq] add interactive keyboard preview
authordemmm <anke62@gmail.com>
Mon, 6 Sep 2021 17:25:16 +0000 (19:25 +0200)
committerdemmm <anke62@gmail.com>
Mon, 6 Sep 2021 17:25:16 +0000 (19:25 +0200)
rewrite of keyboardq.qml, reduce stackview to 2, use a combobox for
keyboard models list
colors set to configurable
.xml files used for keyboard layouts, about a dozen added now
builds, runs, actions record as intended, GS filled correctly

27 files changed:
src/modules/keyboardq/data/Key.qml [new file with mode: 0644]
src/modules/keyboardq/data/Keyboard.qml [new file with mode: 0644]
src/modules/keyboardq/data/afgani.xml [new file with mode: 0644]
src/modules/keyboardq/data/ar.xml [new file with mode: 0644]
src/modules/keyboardq/data/backspace.svg [new file with mode: 0755]
src/modules/keyboardq/data/backspace.svg.license [new file with mode: 0644]
src/modules/keyboardq/data/button_bkg_center.png [new file with mode: 0755]
src/modules/keyboardq/data/button_bkg_center.png.license [new file with mode: 0644]
src/modules/keyboardq/data/button_bkg_left.png [new file with mode: 0755]
src/modules/keyboardq/data/button_bkg_left.png.license [new file with mode: 0644]
src/modules/keyboardq/data/button_bkg_right.png [new file with mode: 0755]
src/modules/keyboardq/data/button_bkg_right.png.license [new file with mode: 0644]
src/modules/keyboardq/data/de.xml [new file with mode: 0644]
src/modules/keyboardq/data/empty.xml [new file with mode: 0644]
src/modules/keyboardq/data/en.xml [new file with mode: 0644]
src/modules/keyboardq/data/enter.svg [new file with mode: 0755]
src/modules/keyboardq/data/enter.svg.license [new file with mode: 0644]
src/modules/keyboardq/data/es.xml [new file with mode: 0644]
src/modules/keyboardq/data/fr.xml [new file with mode: 0644]
src/modules/keyboardq/data/generic.xml [new file with mode: 0644]
src/modules/keyboardq/data/generic_qz.xml [new file with mode: 0644]
src/modules/keyboardq/data/pt.xml [new file with mode: 0644]
src/modules/keyboardq/data/ru.xml [new file with mode: 0644]
src/modules/keyboardq/data/scan.xml [new file with mode: 0644]
src/modules/keyboardq/data/shift.license [new file with mode: 0644]
src/modules/keyboardq/data/shift.svg [new file with mode: 0755]
src/modules/keyboardq/keyboardq.qml

diff --git a/src/modules/keyboardq/data/Key.qml b/src/modules/keyboardq/data/Key.qml
new file mode 100644 (file)
index 0000000..e85b44f
--- /dev/null
@@ -0,0 +1,179 @@
+/* === This file is part of Calamares - <https://github.com/calamares> ===
+ *
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above.
+ *
+ */
+
+import QtQuick 2.15
+
+Item {
+    id: key
+
+    property string mainLabel: "A"
+    property var secondaryLabels: [];
+
+    property var iconSource;
+
+    property var keyImageLeft: ""
+    property var keyImageRight: ""
+    property var keyImageCenter: ""
+
+    property color keyColor: "#404040"
+    property color keyPressedColor: "grey"
+    property int keyBounds: 2
+    property var keyPressedColorOpacity: 1
+
+    property var mainFontFamily: "Roboto"
+    property color mainFontColor: "white"
+    property int mainFontSize: 18
+
+    property var secondaryFontFamily: "Roboto"
+    property color secondaryFontColor: "white"
+    property int secondaryFontSize: 10
+
+    property bool secondaryLabelVisible: true
+
+    property bool isChekable;
+    property bool isChecked;
+
+    property bool upperCase;
+
+    signal clicked()
+    signal alternatesClicked(string symbol)
+
+    Item {
+        anchors.fill: parent
+        anchors.margins: key.keyBounds
+        visible: key.keyImageLeft != "" || key.keyImageCenter != "" || key.keyImageRight != "" ? 1 : 0
+        Image {
+            id: backgroundImage_left
+            anchors.left: parent.left
+            height: parent.height
+            fillMode: Image.PreserveAspectFit
+            source: key.keyImageLeft
+        }
+        Image {
+            id: backgroundImage_right
+            anchors.right: parent.right
+            height: parent.height
+            fillMode: Image.PreserveAspectFit
+            source: key.keyImageRight
+        }
+        Image {
+            id: backgroundImage_center
+            anchors.fill: parent
+            anchors.leftMargin: backgroundImage_left.width - 1
+            anchors.rightMargin: backgroundImage_right.width - 1
+            height: parent.height
+            fillMode: Image.Stretch
+            source: key.keyImageCenter
+        }
+    }
+
+    Rectangle {
+        id: backgroundItem
+        anchors.fill: parent
+        anchors.margins: key.keyBounds
+        color: key.isChecked || mouseArea.pressed ? key.keyPressedColor : key.keyColor;
+        opacity: key.keyPressedColorOpacity
+    }
+
+    Column
+    {
+        anchors.centerIn: backgroundItem
+
+        Text {
+            id: secondaryLabelsItem
+            smooth: true
+            anchors.right: parent.right
+            visible: true //secondaryLabelVisible
+            text: secondaryLabels.length > 0 ? secondaryLabels : ""
+            color: secondaryFontColor
+
+            font.pixelSize: secondaryFontSize
+            font.weight: Font.Light
+            font.family: secondaryFontFamily
+            font.capitalization: upperCase ? Font.AllUppercase :
+                                                     Font.MixedCase
+        }
+
+        Row {
+            anchors.horizontalCenter: parent.horizontalCenter
+
+            Image {
+                id: icon
+                smooth: true
+                anchors.verticalCenter: parent.verticalCenter
+                source: iconSource
+                //sourceSize.width: key.width * 0.6
+                sourceSize.height: key.height * 0.4
+            }
+
+            Text {
+                id: mainLabelItem
+                smooth: true
+                anchors.verticalCenter: parent.verticalCenter
+                text: mainLabel
+                color: mainFontColor
+                visible: iconSource ? false : true
+
+                font.pixelSize: mainFontSize
+                font.weight: Font.Light
+                font.family: mainFontFamily
+                font.capitalization: upperCase ? Font.AllUppercase :
+                                                         Font.MixedCase
+            }
+        }
+    }
+
+    Row {
+        id: alternatesRow
+        property int selectedIndex: -1
+        visible: false
+        anchors.bottom: backgroundItem.top
+        anchors.left: backgroundItem.left
+
+        Repeater {
+            model: secondaryLabels.length
+
+            Rectangle {
+                property bool isSelected: alternatesRow.selectedIndex == index
+                color: isSelected ? mainLabelItem.color : key.keyPressedColor
+                height: backgroundItem.height
+                width: backgroundItem.width
+
+                Text {
+                    anchors.centerIn: parent
+                    text: secondaryLabels[ index ]
+                    font: mainLabelItem.font
+                    color: isSelected ? key.keyPressedColor : mainLabelItem.color
+                }
+            }
+        }
+    }
+
+    MouseArea {
+        id: mouseArea
+        anchors.fill: parent
+        onPressAndHold: alternatesRow.visible = true
+        onClicked: {
+            if (key.isChekable) key.isChecked = !key.isChecked
+            key.clicked()
+        }
+
+        onReleased: {
+            alternatesRow.visible = false
+            if (alternatesRow.selectedIndex > -1)
+                key.alternatesClicked(secondaryLabels[alternatesRow.selectedIndex])
+        }
+
+        onMouseXChanged: {
+            alternatesRow.selectedIndex =
+            (mouseY < 0 && mouseX > 0 && mouseY < alternatesRow.width) ?
+                        Math.floor(mouseX / backgroundItem.width) :
+                        -1;
+        }
+    }
+}
diff --git a/src/modules/keyboardq/data/Keyboard.qml b/src/modules/keyboardq/data/Keyboard.qml
new file mode 100644 (file)
index 0000000..a804ca9
--- /dev/null
@@ -0,0 +1,222 @@
+/* === This file is part of Calamares - <https://github.com/calamares> ===
+ *
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above.
+ *
+ */
+
+import QtQuick 2.15
+import QtQuick.XmlListModel 2.10
+
+Item {
+    id: keyboard
+
+    width: 1024
+    height: 640
+
+    property int rows: 4;
+    property int columns: 10;
+
+    property string source: "generic.xml"
+    property var target;
+
+    property color backgroundColor: "black"
+
+    property var keyImageLeft: ""
+    property var keyImageRight: ""
+    property var keyImageCenter: ""
+
+    property color keyColor: "#404040"
+    property color keyPressedColor: "grey"
+    property int keyBounds: 2
+    property var keyPressedColorOpacity: 1
+
+    property var mainFontFamily: "Roboto"
+    property color mainFontColor: "white"
+    property int mainFontSize: 59
+
+    property var secondaryFontFamily: "Roboto"
+    property color secondaryFontColor: "white"
+    property int secondaryFontSize: 30
+
+    property bool secondaryLabelsVisible: false
+    property bool doSwitchSource: true
+
+    property bool allUpperCase: false
+
+    signal keyClicked(string key)
+    signal switchSource(string source)
+    signal enterClicked()
+
+    Rectangle {
+        id: root
+        anchors.fill: parent
+        color: backgroundColor
+
+        property int keyWidth: keyboard.width / columns;
+        property int keyHeight: keyboard.height / rows;
+
+        property int xmlIndex: 1
+
+        Text {
+            id: proxyMainTextItem
+            color: keyboard.mainFontColor
+            font.pixelSize: keyboard.mainFontSize
+            font.weight: Font.Light
+            font.family: keyboard.mainFontFamily
+            font.capitalization: keyboard.allUpperCase ? Font.AllUppercase :
+                                                     Font.MixedCase
+            verticalAlignment: Text.AlignVCenter
+            horizontalAlignment: Text.AlignHCenter
+        }
+
+        Text {
+            id: proxySecondaryTextItem
+            color: keyboard.secondaryFontColor
+            font.pixelSize: keyboard.secondaryFontSize
+            font.weight: Font.Light
+            font.family: keyboard.secondaryFontFamily
+            font.capitalization: keyboard.allUpperCase ? Font.AllUppercase :
+                                                     Font.MixedCase
+            verticalAlignment: Text.AlignVCenter
+            horizontalAlignment: Text.AlignHCenter
+        }
+
+        Column {
+            id: column
+            anchors.centerIn: parent
+
+            Repeater {
+                id: rowRepeater
+
+                model: XmlListModel {
+                    id: keyboardModel
+                    source: keyboard.source
+                    query: "/Keyboard/Row"
+
+                    Behavior on source {
+                        NumberAnimation {
+                            easing.type: Easing.InOutSine
+                            duration: 100
+                        }
+                    }
+                }
+
+                Row {
+                    id: keyRow
+                    property int rowIndex: index
+                    anchors.horizontalCenter: if(parent) parent.horizontalCenter
+
+                    Repeater {
+                        id: keyRepeater
+
+                        model: XmlListModel {
+                            source: keyboard.source
+                            query: "/Keyboard/Row[" + (rowIndex + 1) + "]/Key"
+
+                            XmlRole { name: "labels"; query: "@labels/string()" }
+                            XmlRole { name: "ratio"; query: "@ratio/number()" }
+                            XmlRole { name: "icon"; query: "@icon/string()" }
+                            XmlRole { name: "checkable"; query: "@checkable/string()" }
+                        }
+
+                        Key {
+                            id: key
+                            width: root.keyWidth * ratio
+                            height: root.keyHeight
+                            iconSource: icon
+                            mainFontFamily: proxyMainTextItem.font
+                            mainFontColor: proxyMainTextItem.color
+                            secondaryFontFamily: proxySecondaryTextItem.font
+                            secondaryFontColor: proxySecondaryTextItem.color
+                            secondaryLabelVisible: keyboard.secondaryLabelsVisible
+                            keyColor: keyboard.keyColor
+                            keyImageLeft: keyboard.keyImageLeft
+                            keyImageRight: keyboard.keyImageRight
+                            keyImageCenter: keyboard.keyImageCenter
+                            keyPressedColor: keyboard.keyPressedColor
+                            keyPressedColorOpacity: keyboard.keyPressedColorOpacity
+                            keyBounds: keyboard.keyBounds
+                            isChekable: checkable
+                            isChecked: isChekable &&
+                                       command &&
+                                       command === "shift" &&
+                                       keyboard.allUpperCase
+                            upperCase: keyboard.allUpperCase
+
+                            property var command
+                            property var params: labels
+
+                            onParamsChanged: {
+                                var labelSplit;
+
+                                if(params[0] === '|')
+                                {
+                                    mainLabel = '|'
+                                    labelSplit = params
+                                }
+                                else
+                                {
+                                    labelSplit = params.split(/[|]+/)
+
+                                    if (labelSplit[0] === '!')
+                                        mainLabel = '!';
+                                    else
+                                        mainLabel = params.split(/[!|]+/)[0].toString();
+                                }
+
+                                if (labelSplit[1]) secondaryLabels = labelSplit[1];
+
+                                if (labelSplit[0] === '!')
+                                    command = params.split(/[!|]+/)[1];
+                                else
+                                    command = params.split(/[!]+/)[1];
+                            }
+
+                            onClicked: {
+                                if (command)
+                                {
+                                    var commandList = command.split(":");
+
+                                    switch(commandList[0])
+                                    {
+                                        case "source":
+                                            keyboard.switchSource(commandList[1])
+                                            if(doSwitchSource) keyboard.source = commandList[1]
+                                            return;
+                                        case "shift":
+                                            keyboard.allUpperCase = !keyboard.allUpperCase
+                                            return;
+                                        case "backspace":
+                                            keyboard.keyClicked('\b');
+                                            target.text = target.text.substring(0,target.text.length-1)
+                                            return;
+                                        case "enter":
+                                            keyboard.enterClicked()
+                                            return;
+                                        case "tab":
+                                            keyboard.keyClicked('\t');
+                                            target.text = target.text + "   "
+                                            return;
+                                        default: return;
+                                    }
+                                }
+                                if (mainLabel.length === 1)
+                                    root.emitKeyClicked(mainLabel);
+                            }
+                            onAlternatesClicked: root.emitKeyClicked(symbol);
+                        }
+                    }
+                }
+            }
+        }
+
+        function emitKeyClicked(text) {
+            var emitText = keyboard.allUpperCase ? text.toUpperCase() : text;
+            keyClicked( emitText );
+            target.text = target.text + emitText
+        }
+    }
+}
+
diff --git a/src/modules/keyboardq/data/afgani.xml b/src/modules/keyboardq/data/afgani.xml
new file mode 100644 (file)
index 0000000..356e393
--- /dev/null
@@ -0,0 +1,65 @@
+<!-- === This file is part of Calamares - <https://github.com/calamares> ===
+
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Keyboard>
+    <Row>
+        <Key labels = " |" ratio = ".6"/>
+        <Key labels = "ض|" ratio = ".7"/>
+        <Key labels = "ص|" ratio = ".7"/>
+        <Key labels = "ث|" ratio = ".7"/>
+        <Key labels = "ق|" ratio = ".7"/>
+        <Key labels = "ف|" ratio = ".7"/>
+        <Key labels = "غ|" ratio = ".7"/>
+        <Key labels = "ع|" ratio = ".7"/>
+        <Key labels = "ه|" ratio = ".7"/>
+        <Key labels = "خ|" ratio = ".7"/>
+        <Key labels = "ح|" ratio = ".7"/>
+        <Key labels = "ج|" ratio = ".7"/>
+        <Key labels = "چ|" ratio = ".7"/>
+        <Key labels = " |" ratio = "1"/>
+    </Row>
+    <Row>
+        <Key labels = " |" ratio = ".8"/>
+        <Key labels = "ش|" ratio = ".7"/>
+        <Key labels = "س|" ratio = ".7"/>
+        <Key labels = "ی|" ratio = ".7"/>
+        <Key labels = "ب|" ratio = ".7"/>
+        <Key labels = "ل|" ratio = ".7"/>
+        <Key labels = "ا|" ratio = ".7"/>
+        <Key labels = "ت|" ratio = ".7"/>
+        <Key labels = "ن|" ratio = ".7"/>
+        <Key labels = "م|" ratio = ".7"/>
+        <Key labels = "ک|" ratio = ".7"/>
+        <Key labels = "ګ|" ratio = ".7"/>
+        <Key labels = "\|" ratio = ".7"/>
+        <Key labels = "↵!enter" icon = "enter.svg" ratio = ".8"/>
+    </Row>
+    <Row>
+        <Key labels = "&#8593;!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = "ط|" ratio = ".7"/>
+        <Key labels = "ې|" ratio = ".7"/>
+        <Key labels = "ز|" ratio = ".7"/>
+        <Key labels = "ر|" ratio = ".7"/>
+        <Key labels = "ذ|" ratio = ".7"/>
+        <Key labels = "ړ|" ratio = ".7"/>
+        <Key labels = "و|" ratio = ".7"/>
+        <Key labels = "ږ|" ratio = ".7"/>
+        <Key labels = "/|" ratio = ".7"/>
+        <Key labels = "&#8593;!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "Ctrl" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "4"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Ctrl" ratio = "1"/>
+    </Row>
+</Keyboard>
diff --git a/src/modules/keyboardq/data/ar.xml b/src/modules/keyboardq/data/ar.xml
new file mode 100644 (file)
index 0000000..07bd9b0
--- /dev/null
@@ -0,0 +1,65 @@
+<!-- === This file is part of Calamares - <https://github.com/calamares> ===
+
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Keyboard>
+    <Row>
+        <Key labels = " |" ratio = ".6"/>
+        <Key labels = "ض|" ratio = ".7"/>
+        <Key labels = "ص|" ratio = ".7"/>
+        <Key labels = "ث|" ratio = ".7"/>
+        <Key labels = "ق|" ratio = ".7"/>
+        <Key labels = "ف|" ratio = ".7"/>
+        <Key labels = "غ|" ratio = ".7"/>
+        <Key labels = "ع|" ratio = ".7"/>
+        <Key labels = "ه|" ratio = ".7"/>
+        <Key labels = "خ|" ratio = ".7"/>
+        <Key labels = "ح|" ratio = ".7"/>
+        <Key labels = "ج|" ratio = ".7"/>
+        <Key labels = "د|" ratio = ".7"/>
+        <Key labels = " |" ratio = "1"/>
+    </Row>
+    <Row>
+        <Key labels = " |" ratio = ".8"/>
+        <Key labels = "ش|" ratio = ".7"/>
+        <Key labels = "س|" ratio = ".7"/>
+        <Key labels = "ي|" ratio = ".7"/>
+        <Key labels = "ب|" ratio = ".7"/>
+        <Key labels = "ل|" ratio = ".7"/>
+        <Key labels = "ا|" ratio = ".7"/>
+        <Key labels = "ت|" ratio = ".7"/>
+        <Key labels = "ن|" ratio = ".7"/>
+        <Key labels = "م|" ratio = ".7"/>
+        <Key labels = "ك|" ratio = ".7"/>
+        <Key labels = "ط|" ratio = ".7"/>
+        <Key labels = "\|" ratio = ".7"/>
+        <Key labels = "↵!enter" icon = "enter.svg" ratio = ".8"/>
+    </Row>
+    <Row>
+        <Key labels = "&#8593;!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = "ئ|" ratio = ".7"/>
+        <Key labels = "ء|" ratio = ".7"/>
+        <Key labels = "ؤ|" ratio = ".7"/>
+        <Key labels = "ر|" ratio = ".7"/>
+        <Key labels = "لا|" ratio = ".7"/>
+        <Key labels = "ى|" ratio = ".7"/>
+        <Key labels = "و|" ratio = ".7"/>
+        <Key labels = "ز|" ratio = ".7"/>
+        <Key labels = "ظ|" ratio = ".7"/>
+        <Key labels = "&#8593;!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "Ctrl" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "4"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Ctrl" ratio = "1"/>
+    </Row>
+</Keyboard>
diff --git a/src/modules/keyboardq/data/backspace.svg b/src/modules/keyboardq/data/backspace.svg
new file mode 100755 (executable)
index 0000000..4d29e24
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">\r
+<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>\r
+<g><g transform="translate(0.000000,511.000000) scale(0.100000,-0.100000)"><path fill="#FFFFFF" d="M1755,1514.1C875.7,828.2,143.7,245.9,127.6,218.2c-36.8-64.5-36.8-151.9,0-216.4c27.6-50.6,3158-2497.4,3229.4-2525c20.7-6.9,1468.5-13.8,3217.9-13.8c3475.7,0,3245.5-9.2,3303,131.2c18.4,48.3,25.3,715.8,20.7,2557.3l-6.9,2495.1l-64.4,55.2l-64.5,55.2H6558.8H3354.7L1755,1514.1z M9442.9,110.1v-2186.7H6480.5H3515.8L2123.3-992.5C1356.8-398.6,730.7,98.5,730.7,110.1c0,13.8,626.1,508.7,1390.3,1104.8l1392.6,1081.8h2964.7h2964.7V110.1z"/><path fill="#FFFFFF" d="M4917.6,1735.1c-94.4-41.4-147.3-119.7-147.3-218.7c0-76,48.3-131.2,690.5-773.4l690.5-690.5L5460.8-638c-662.9-662.9-690.5-695.1-690.5-780.3c0-126.6,99-221,232.5-221c99,0,99,0,784.9,683.6l685.9,685.9l685.9-685.9c685.9-683.6,685.9-683.6,784.9-683.6c133.5,0,232.5,94.4,232.5,221c0,85.2-27.6,117.4-690.5,780.3L6795.8,52.5L7486.4,743c662.9,662.9,690.5,695.1,690.5,780.3c0,126.6-99,221-232.5,221c-99,0-99,0-784.9-683.6l-685.9-685.9l-685.9,685.9c-377.5,375.2-697.4,683.6-711.3,683.6c-13.8,0-39.1,4.6-57.5,11.5C5002.8,1760.4,4956.7,1751.2,4917.6,1735.1z"/></g></g>\r
+</svg>\r
diff --git a/src/modules/keyboardq/data/backspace.svg.license b/src/modules/keyboardq/data/backspace.svg.license
new file mode 100644 (file)
index 0000000..36158c6
--- /dev/null
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2019 https://www.onlinewebfonts.com/fonts
+SPDX-License-Identifier: GPL-3.0-or-later
diff --git a/src/modules/keyboardq/data/button_bkg_center.png b/src/modules/keyboardq/data/button_bkg_center.png
new file mode 100755 (executable)
index 0000000..d17e169
Binary files /dev/null and b/src/modules/keyboardq/data/button_bkg_center.png differ
diff --git a/src/modules/keyboardq/data/button_bkg_center.png.license b/src/modules/keyboardq/data/button_bkg_center.png.license
new file mode 100644 (file)
index 0000000..d36c167
--- /dev/null
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2019 MarcoPellin <marco.pellin@gmail.com>
+SPDX-License-Identifier: GPL-3.0-or-later
diff --git a/src/modules/keyboardq/data/button_bkg_left.png b/src/modules/keyboardq/data/button_bkg_left.png
new file mode 100755 (executable)
index 0000000..0a674af
Binary files /dev/null and b/src/modules/keyboardq/data/button_bkg_left.png differ
diff --git a/src/modules/keyboardq/data/button_bkg_left.png.license b/src/modules/keyboardq/data/button_bkg_left.png.license
new file mode 100644 (file)
index 0000000..d36c167
--- /dev/null
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2019 MarcoPellin <marco.pellin@gmail.com>
+SPDX-License-Identifier: GPL-3.0-or-later
diff --git a/src/modules/keyboardq/data/button_bkg_right.png b/src/modules/keyboardq/data/button_bkg_right.png
new file mode 100755 (executable)
index 0000000..ce7c4ad
Binary files /dev/null and b/src/modules/keyboardq/data/button_bkg_right.png differ
diff --git a/src/modules/keyboardq/data/button_bkg_right.png.license b/src/modules/keyboardq/data/button_bkg_right.png.license
new file mode 100644 (file)
index 0000000..d36c167
--- /dev/null
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2019 MarcoPellin <marco.pellin@gmail.com>
+SPDX-License-Identifier: GPL-3.0-or-later
diff --git a/src/modules/keyboardq/data/de.xml b/src/modules/keyboardq/data/de.xml
new file mode 100644 (file)
index 0000000..5551315
--- /dev/null
@@ -0,0 +1,66 @@
+<!-- === This file is part of Calamares - <https://github.com/calamares> ===
+
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Keyboard>
+    <Row>
+        <Key labels = " |" ratio = ".6"/>
+        <Key labels = "q|" ratio = ".7"/>
+        <Key labels = "w|" ratio = ".7"/>
+        <Key labels = "e|" ratio = ".7"/>
+        <Key labels = "r|" ratio = ".7"/>
+        <Key labels = "t|" ratio = ".7"/>
+        <Key labels = "z|" ratio = ".7"/>
+        <Key labels = "u|" ratio = ".7"/>
+        <Key labels = "i|" ratio = ".7"/>
+        <Key labels = "o|" ratio = ".7"/>
+        <Key labels = "p|" ratio = ".7"/>
+        <Key labels = "ü |" ratio = ".7"/>
+        <Key labels = "+|" ratio = ".7"/>
+        <Key labels = " |" ratio = "1.0"/>
+    </Row>
+    <Row>
+        <Key labels = " |" ratio = ".9"/>
+        <Key labels = "a|" ratio = ".7"/>
+        <Key labels = "s|" ratio = ".7"/>
+        <Key labels = "d|" ratio = ".7"/>
+        <Key labels = "f|" ratio = ".7"/>
+        <Key labels = "g|" ratio = ".7"/>
+        <Key labels = "h|" ratio = ".7"/>
+        <Key labels = "j|" ratio = ".7"/>
+        <Key labels = "k|" ratio = ".7"/>
+        <Key labels = "l|" ratio = ".7"/>
+        <Key labels = "ö|" ratio = ".7"/>
+        <Key labels = "ä|" ratio = ".7"/>
+        <Key labels = "#|" ratio = ".7"/>
+        <Key labels = "↵!enter" icon = "enter.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "&#8593;!shift" ratio = ".7" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "&lt;|" ratio = ".7"/>
+        <Key labels = "y|" ratio = ".7"/>
+        <Key labels = "x|" ratio = ".7"/>
+        <Key labels = "c|" ratio = ".7"/>
+        <Key labels = "v|" ratio = ".7"/>
+        <Key labels = "b|" ratio = ".7"/>
+        <Key labels = "n|" ratio = ".7"/>
+        <Key labels = "m|" ratio = ".7"/>
+        <Key labels = ",|" ratio = ".7"/>
+        <Key labels = ".|" ratio = ".7"/>
+        <Key labels = "-|" ratio = ".7"/>
+        <Key labels = "&#8593;!shift" ratio = ".9" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "Ctrl" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "4"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Ctrl" ratio = "1"/>
+    </Row>
+</Keyboard>
diff --git a/src/modules/keyboardq/data/empty.xml b/src/modules/keyboardq/data/empty.xml
new file mode 100644 (file)
index 0000000..74e913a
--- /dev/null
@@ -0,0 +1,64 @@
+<!-- === This file is part of Calamares - <https://github.com/calamares> ===
+
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Keyboard>
+    <Row>
+        <Key labels = " |" ratio = ".8"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".8"/>
+    </Row>
+    <Row>
+        <Key labels = " |" ratio = "1.3"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
+    </Row>
+    <Row>
+        <Key labels = "&#8593;!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = "&#8593;!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "Ctrl" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "4"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Ctrl" ratio = "1"/>
+    </Row>
+</Keyboard>
diff --git a/src/modules/keyboardq/data/en.xml b/src/modules/keyboardq/data/en.xml
new file mode 100644 (file)
index 0000000..2ab9a34
--- /dev/null
@@ -0,0 +1,64 @@
+<!-- === This file is part of Calamares - <https://github.com/calamares> ===
+
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Keyboard>
+    <Row>
+        <Key labels = " |" ratio = ".8"/>
+        <Key labels = "q|" ratio = ".7"/>
+        <Key labels = "w|" ratio = ".7"/>
+        <Key labels = "e|" ratio = ".7"/>
+        <Key labels = "r|" ratio = ".7"/>
+        <Key labels = "t|" ratio = ".7"/>
+        <Key labels = "y|" ratio = ".7"/>
+        <Key labels = "u|" ratio = ".7"/>
+        <Key labels = "i|" ratio = ".7"/>
+        <Key labels = "o|" ratio = ".7"/>
+        <Key labels = "p|" ratio = ".7"/>
+        <Key labels = "[|" ratio = ".7"/>
+        <Key labels = "]|" ratio = ".7"/>
+        <Key labels = "\|" ratio = ".8"/>
+    </Row>
+    <Row>
+        <Key labels = " |" ratio = "1.3"/>
+        <Key labels = "a|" ratio = ".7"/>
+        <Key labels = "s|" ratio = ".7"/>
+        <Key labels = "d|" ratio = ".7"/>
+        <Key labels = "f|" ratio = ".7"/>
+        <Key labels = "g|" ratio = ".7"/>
+        <Key labels = "h|" ratio = ".7"/>
+        <Key labels = "j|" ratio = ".7"/>
+        <Key labels = "k|" ratio = ".7"/>
+        <Key labels = "l|" ratio = ".7"/>
+        <Key labels = ";|" ratio = ".7"/>
+        <Key labels = "'|" ratio = ".7"/>
+        <Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
+    </Row>
+    <Row>
+        <Key labels = "&#8593;!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "z|" ratio = ".7"/>
+        <Key labels = "x|" ratio = ".7"/>
+        <Key labels = "c|" ratio = ".7"/>
+        <Key labels = "v|" ratio = ".7"/>
+        <Key labels = "b|" ratio = ".7"/>
+        <Key labels = "n|" ratio = ".7"/>
+        <Key labels = "m|" ratio = ".7"/>
+        <Key labels = ",|" ratio = ".7"/>
+        <Key labels = ".|" ratio = ".7"/>
+        <Key labels = "/|" ratio = ".7"/>
+        <Key labels = "&#8593;!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "Ctrl" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "4"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Ctrl" ratio = "1"/>
+    </Row>
+</Keyboard>
diff --git a/src/modules/keyboardq/data/enter.svg b/src/modules/keyboardq/data/enter.svg
new file mode 100755 (executable)
index 0000000..c66a749
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+        width="484.5px" height="484.5px" viewBox="0 0 484.5 484.5" style="enable-background:new 0 0 484.5 484.5;" xml:space="preserve"\r
+       >\r
+<g>\r
+       <g id="keyboard-return">\r
+               <polygon fill="#FFFFFF" points="433.5,114.75 433.5,216.75 96.9,216.75 188.7,124.95 153,89.25 0,242.25 153,395.25 188.7,359.55 96.9,267.75 \r
+                       484.5,267.75 484.5,114.75               "/>\r
+       </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
diff --git a/src/modules/keyboardq/data/enter.svg.license b/src/modules/keyboardq/data/enter.svg.license
new file mode 100644 (file)
index 0000000..36158c6
--- /dev/null
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2019 https://www.onlinewebfonts.com/fonts
+SPDX-License-Identifier: GPL-3.0-or-later
diff --git a/src/modules/keyboardq/data/es.xml b/src/modules/keyboardq/data/es.xml
new file mode 100644 (file)
index 0000000..6f69c9c
--- /dev/null
@@ -0,0 +1,64 @@
+<!-- === This file is part of Calamares - <https://github.com/calamares> ===
+
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Keyboard>
+    <Row>
+        <Key labels = " |" ratio = ".8"/>
+        <Key labels = "q|" ratio = ".7"/>
+        <Key labels = "w|" ratio = ".7"/>
+        <Key labels = "e|" ratio = ".7"/>
+        <Key labels = "r|" ratio = ".7"/>
+        <Key labels = "t|" ratio = ".7"/>
+        <Key labels = "y|" ratio = ".7"/>
+        <Key labels = "u|" ratio = ".7"/>
+        <Key labels = "i|" ratio = ".7"/>
+        <Key labels = "o|" ratio = ".7"/>
+        <Key labels = "p|" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".8"/>
+    </Row>
+    <Row>
+        <Key labels = " |" ratio = "1.3"/>
+        <Key labels = "a|" ratio = ".7"/>
+        <Key labels = "s|" ratio = ".7"/>
+        <Key labels = "d|" ratio = ".7"/>
+        <Key labels = "f|" ratio = ".7"/>
+        <Key labels = "g|" ratio = ".7"/>
+        <Key labels = "h|" ratio = ".7"/>
+        <Key labels = "j|" ratio = ".7"/>
+        <Key labels = "k|" ratio = ".7"/>
+        <Key labels = "l|" ratio = ".7"/>
+        <Key labels = "ñ|" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
+    </Row>
+    <Row>
+        <Key labels = "&#8593;!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "z|" ratio = ".7"/>
+        <Key labels = "x|" ratio = ".7"/>
+        <Key labels = "c|" ratio = ".7"/>
+        <Key labels = "v|" ratio = ".7"/>
+        <Key labels = "b|" ratio = ".7"/>
+        <Key labels = "n|" ratio = ".7"/>
+        <Key labels = "m|" ratio = ".7"/>
+        <Key labels = "," ratio = ".7"/>
+        <Key labels = ".|" ratio = ".7"/>
+        <Key labels = "-|" ratio = ".7"/>
+        <Key labels = "&#8593;!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "Ctrl" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "4"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Ctrl" ratio = "1"/>
+    </Row>
+</Keyboard>
diff --git a/src/modules/keyboardq/data/fr.xml b/src/modules/keyboardq/data/fr.xml
new file mode 100644 (file)
index 0000000..0f77c3f
--- /dev/null
@@ -0,0 +1,66 @@
+<!-- === This file is part of Calamares - <https://github.com/calamares> ===
+
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Keyboard>
+    <Row>
+        <Key labels = " |" ratio = ".8"/>
+        <Key labels = "a|" ratio = ".7"/>
+        <Key labels = "z|" ratio = ".7"/>
+        <Key labels = "e|" ratio = ".7"/>
+        <Key labels = "r|" ratio = ".7"/>
+        <Key labels = "t|" ratio = ".7"/>
+        <Key labels = "y|" ratio = ".7"/>
+        <Key labels = "u|" ratio = ".7"/>
+        <Key labels = "i|" ratio = ".7"/>
+        <Key labels = "o|" ratio = ".7"/>
+        <Key labels = "p|" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".8"/>
+    </Row>
+    <Row>
+        <Key labels = " |" ratio = ".9"/>
+        <Key labels = "q|" ratio = ".7"/>
+        <Key labels = "s|" ratio = ".7"/>
+        <Key labels = "d|" ratio = ".7"/>
+        <Key labels = "f|" ratio = ".7"/>
+        <Key labels = "g|" ratio = ".7"/>
+        <Key labels = "h|" ratio = ".7"/>
+        <Key labels = "j|" ratio = ".7"/>
+        <Key labels = "k|" ratio = ".7"/>
+        <Key labels = "l|" ratio = ".7"/>
+        <Key labels = "m|" ratio = ".7"/>
+        <Key labels = "ù|" ratio = ".7"/>
+        <Key labels = "*|" ratio = ".7"/>
+        <Key labels = "↵!enter" icon = "enter.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "&#8593;!shift" ratio = ".5" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "&lt;|" ratio = ".7"/>
+        <Key labels = "w|" ratio = ".7"/>
+        <Key labels = "x|" ratio = ".7"/>
+        <Key labels = "c|" ratio = ".7"/>
+        <Key labels = "v|" ratio = ".7"/>
+        <Key labels = "b|" ratio = ".7"/>
+        <Key labels = "n|" ratio = ".7"/>
+        <Key labels = ",|" ratio = ".7"/>
+        <Key labels = ";|" ratio = ".7"/>
+        <Key labels = ":|" ratio = ".7"/>
+        <Key labels = "!|" ratio = ".7"/>
+        <Key labels = "&#8593;!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "Ctrl" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "4"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Ctrl" ratio = "1"/>
+    </Row>
+</Keyboard>
diff --git a/src/modules/keyboardq/data/generic.xml b/src/modules/keyboardq/data/generic.xml
new file mode 100644 (file)
index 0000000..7304626
--- /dev/null
@@ -0,0 +1,64 @@
+<!-- === This file is part of Calamares - <https://github.com/calamares> ===
+
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Keyboard>
+    <Row>
+        <Key labels = " |" ratio = ".8"/>
+        <Key labels = "q|" ratio = ".7"/>
+        <Key labels = "w|" ratio = ".7"/>
+        <Key labels = "e|" ratio = ".7"/>
+        <Key labels = "r|" ratio = ".7"/>
+        <Key labels = "t|" ratio = ".7"/>
+        <Key labels = "y|" ratio = ".7"/>
+        <Key labels = "u|" ratio = ".7"/>
+        <Key labels = "i|" ratio = ".7"/>
+        <Key labels = "o|" ratio = ".7"/>
+        <Key labels = "p|" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".8"/>
+    </Row>
+    <Row>
+        <Key labels = " |" ratio = "1.3"/>
+        <Key labels = "a|" ratio = ".7"/>
+        <Key labels = "s|" ratio = ".7"/>
+        <Key labels = "d|" ratio = ".7"/>
+        <Key labels = "f|" ratio = ".7"/>
+        <Key labels = "g|" ratio = ".7"/>
+        <Key labels = "h|" ratio = ".7"/>
+        <Key labels = "j|" ratio = ".7"/>
+        <Key labels = "k|" ratio = ".7"/>
+        <Key labels = "l|" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
+    </Row>
+    <Row>
+        <Key labels = "&#8593;!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "z|" ratio = ".7"/>
+        <Key labels = "x|" ratio = ".7"/>
+        <Key labels = "c|" ratio = ".7"/>
+        <Key labels = "v|" ratio = ".7"/>
+        <Key labels = "b|" ratio = ".7"/>
+        <Key labels = "n|" ratio = ".7"/>
+        <Key labels = "m|" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = "&#8593;!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "Ctrl" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "4"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Ctrl" ratio = "1"/>
+    </Row>
+</Keyboard>
diff --git a/src/modules/keyboardq/data/generic_qz.xml b/src/modules/keyboardq/data/generic_qz.xml
new file mode 100644 (file)
index 0000000..c896f59
--- /dev/null
@@ -0,0 +1,66 @@
+<!-- === This file is part of Calamares - <https://github.com/calamares> ===
+
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Keyboard>
+    <Row>
+        <Key labels = " |" ratio = ".6"/>
+        <Key labels = "q|" ratio = ".7"/>
+        <Key labels = "w|" ratio = ".7"/>
+        <Key labels = "e|" ratio = ".7"/>
+        <Key labels = "r|" ratio = ".7"/>
+        <Key labels = "t|" ratio = ".7"/>
+        <Key labels = "z|" ratio = ".7"/>
+        <Key labels = "u|" ratio = ".7"/>
+        <Key labels = "i|" ratio = ".7"/>
+        <Key labels = "o|" ratio = ".7"/>
+        <Key labels = "p|" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = "1.0"/>
+    </Row>
+    <Row>
+        <Key labels = " |" ratio = ".9"/>
+        <Key labels = "a|" ratio = ".7"/>
+        <Key labels = "s|" ratio = ".7"/>
+        <Key labels = "d|" ratio = ".7"/>
+        <Key labels = "f|" ratio = ".7"/>
+        <Key labels = "g|" ratio = ".7"/>
+        <Key labels = "h|" ratio = ".7"/>
+        <Key labels = "j|" ratio = ".7"/>
+        <Key labels = "k|" ratio = ".7"/>
+        <Key labels = "l|" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = "↵!enter" icon = "enter.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "&#8593;!shift" ratio = ".7" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "&lt;|" ratio = ".7"/>
+        <Key labels = "y|" ratio = ".7"/>
+        <Key labels = "x|" ratio = ".7"/>
+        <Key labels = "c|" ratio = ".7"/>
+        <Key labels = "v|" ratio = ".7"/>
+        <Key labels = "b|" ratio = ".7"/>
+        <Key labels = "n|" ratio = ".7"/>
+        <Key labels = "m|" ratio = ".7"/>
+        <Key labels = ",|" ratio = ".7"/>
+        <Key labels = ".|" ratio = ".7"/>
+        <Key labels = "-|" ratio = ".7"/>
+        <Key labels = "&#8593;!shift" ratio = ".9" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "Ctrl" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "4"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Ctrl" ratio = "1"/>
+    </Row>
+</Keyboard>
diff --git a/src/modules/keyboardq/data/pt.xml b/src/modules/keyboardq/data/pt.xml
new file mode 100644 (file)
index 0000000..0142260
--- /dev/null
@@ -0,0 +1,64 @@
+<!-- === This file is part of Calamares - <https://github.com/calamares> ===
+
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Keyboard>
+    <Row>
+        <Key labels = " |" ratio = ".8"/>
+        <Key labels = "q|" ratio = ".7"/>
+        <Key labels = "w|" ratio = ".7"/>
+        <Key labels = "e|" ratio = ".7"/>
+        <Key labels = "r|" ratio = ".7"/>
+        <Key labels = "t|" ratio = ".7"/>
+        <Key labels = "y|" ratio = ".7"/>
+        <Key labels = "u|" ratio = ".7"/>
+        <Key labels = "i|" ratio = ".7"/>
+        <Key labels = "o|" ratio = ".7"/>
+        <Key labels = "p|" ratio = ".7"/>
+        <Key labels = "+|" ratio = ".7"/>
+        <Key labels = "]|" ratio = ".7"/>
+        <Key labels = " |" ratio = ".8"/>
+    </Row>
+    <Row>
+        <Key labels = " |" ratio = "1.3"/>
+        <Key labels = "a|" ratio = ".7"/>
+        <Key labels = "s|" ratio = ".7"/>
+        <Key labels = "d|" ratio = ".7"/>
+        <Key labels = "f|" ratio = ".7"/>
+        <Key labels = "g|" ratio = ".7"/>
+        <Key labels = "h|" ratio = ".7"/>
+        <Key labels = "j|" ratio = ".7"/>
+        <Key labels = "k|" ratio = ".7"/>
+        <Key labels = "l|" ratio = ".7"/>
+        <Key labels = "ç|" ratio = ".7"/>
+        <Key labels = "º|" ratio = ".7"/>
+        <Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
+    </Row>
+    <Row>
+        <Key labels = "&#8593;!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "z|" ratio = ".7"/>
+        <Key labels = "x|" ratio = ".7"/>
+        <Key labels = "c|" ratio = ".7"/>
+        <Key labels = "v|" ratio = ".7"/>
+        <Key labels = "b|" ratio = ".7"/>
+        <Key labels = "n|" ratio = ".7"/>
+        <Key labels = "m|" ratio = ".7"/>
+        <Key labels = ",|" ratio = ".7"/>
+        <Key labels = ".|" ratio = ".7"/>
+        <Key labels = "-|" ratio = ".7"/>
+        <Key labels = "&#8593;!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "Ctrl" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "4"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Ctrl" ratio = "1"/>
+    </Row>
+</Keyboard>
diff --git a/src/modules/keyboardq/data/ru.xml b/src/modules/keyboardq/data/ru.xml
new file mode 100644 (file)
index 0000000..38f2b68
--- /dev/null
@@ -0,0 +1,64 @@
+<!-- === This file is part of Calamares - <https://github.com/calamares> ===
+
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Keyboard>
+    <Row>
+        <Key labels = " |" ratio = ".8"/>
+        <Key labels = "й|" ratio = ".7"/>
+        <Key labels = "ц|" ratio = ".7"/>
+        <Key labels = "у|" ratio = ".7"/>
+        <Key labels = "к|" ratio = ".7"/>
+        <Key labels = "е|" ratio = ".7"/>
+        <Key labels = "н|" ratio = ".7"/>
+        <Key labels = "г|" ratio = ".7"/>
+        <Key labels = "ш|" ratio = ".7"/>
+        <Key labels = "щ|" ratio = ".7"/>
+        <Key labels = "з|" ratio = ".7"/>
+        <Key labels = "х|" ratio = ".7"/>
+        <Key labels = "Ъ|" ratio = ".7"/>
+        <Key labels = " |" ratio = ".8"/>
+    </Row>
+    <Row>
+        <Key labels = " |" ratio = "1.3"/>
+        <Key labels = "ф|" ratio = ".7"/>
+        <Key labels = "ы|" ratio = ".7"/>
+        <Key labels = "в|" ratio = ".7"/>
+        <Key labels = "а|" ratio = ".7"/>
+        <Key labels = "п|" ratio = ".7"/>
+        <Key labels = "р|" ratio = ".7"/>
+        <Key labels = "о|" ratio = ".7"/>
+        <Key labels = "л|" ratio = ".7"/>
+        <Key labels = "д|" ratio = ".7"/>
+        <Key labels = "ж|" ratio = ".7"/>
+        <Key labels = "э|" ratio = ".7"/>
+        <Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
+    </Row>
+    <Row>
+        <Key labels = "&#8593;!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "я|" ratio = ".7"/>
+        <Key labels = "ч|" ratio = ".7"/>
+        <Key labels = "с|" ratio = ".7"/>
+        <Key labels = "м|" ratio = ".7"/>
+        <Key labels = "и|" ratio = ".7"/>
+        <Key labels = "т|" ratio = ".7"/>
+        <Key labels = "ь|" ratio = ".7"/>
+        <Key labels = "б|" ratio = ".7"/>
+        <Key labels = "ю|" ratio = ".7"/>
+        <Key labels = ".|" ratio = ".7"/>
+        <Key labels = "&#8593;!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "Ctrl" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "4"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Ctrl" ratio = "1"/>
+    </Row>
+</Keyboard>
diff --git a/src/modules/keyboardq/data/scan.xml b/src/modules/keyboardq/data/scan.xml
new file mode 100644 (file)
index 0000000..76981f3
--- /dev/null
@@ -0,0 +1,64 @@
+<!-- === This file is part of Calamares - <https://github.com/calamares> ===
+
+ *   Copyright 2021, Anke Boersma <demm@kaosx.us>
+ *
+ *   Calamares is Free Software: see the License-Identifier above. -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<Keyboard>
+    <Row>
+        <Key labels = " |" ratio = ".8"/>
+        <Key labels = "q|" ratio = ".7"/>
+        <Key labels = "w|" ratio = ".7"/>
+        <Key labels = "e|" ratio = ".7"/>
+        <Key labels = "r|" ratio = ".7"/>
+        <Key labels = "t|" ratio = ".7"/>
+        <Key labels = "y|" ratio = ".7"/>
+        <Key labels = "u|" ratio = ".7"/>
+        <Key labels = "i|" ratio = ".7"/>
+        <Key labels = "o|" ratio = ".7"/>
+        <Key labels = "p|" ratio = ".7"/>
+        <Key labels = "å|" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".8"/>
+    </Row>
+    <Row>
+        <Key labels = " |" ratio = "1.3"/>
+        <Key labels = "a|" ratio = ".7"/>
+        <Key labels = "s|" ratio = ".7"/>
+        <Key labels = "d|" ratio = ".7"/>
+        <Key labels = "f|" ratio = ".7"/>
+        <Key labels = "g|" ratio = ".7"/>
+        <Key labels = "h|" ratio = ".7"/>
+        <Key labels = "j|" ratio = ".7"/>
+        <Key labels = "k|" ratio = ".7"/>
+        <Key labels = "l|" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = " |" ratio = ".7"/>
+        <Key labels = "↵!enter" icon = "enter.svg" ratio = "1"/>
+    </Row>
+    <Row>
+        <Key labels = "&#8593;!shift" ratio = "1.2" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "z|" ratio = ".7"/>
+        <Key labels = "x|" ratio = ".7"/>
+        <Key labels = "c|" ratio = ".7"/>
+        <Key labels = "v|" ratio = ".7"/>
+        <Key labels = "b|" ratio = ".7"/>
+        <Key labels = "n|" ratio = ".7"/>
+        <Key labels = "m|" ratio = ".7"/>
+        <Key labels = ",|" ratio = ".7"/>
+        <Key labels = ".|" ratio = ".7"/>
+        <Key labels = "-|" ratio = ".7"/>
+        <Key labels = "&#8593;!shift" ratio = "1.1" icon = "shift.svg" checkable = "true"/>
+        <Key labels = "⌫!backspace" icon = "backspace.svg" ratio = ".7"/>
+    </Row>
+    <Row>
+        <Key labels = "Ctrl" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "4"/>
+        <Key labels = "Alt|" ratio = "1"/>
+        <Key labels = " |" ratio = "1"/>
+        <Key labels = "Ctrl" ratio = "1"/>
+    </Row>
+</Keyboard>
diff --git a/src/modules/keyboardq/data/shift.license b/src/modules/keyboardq/data/shift.license
new file mode 100644 (file)
index 0000000..36158c6
--- /dev/null
@@ -0,0 +1,2 @@
+SPDX-FileCopyrightText: 2019 https://www.onlinewebfonts.com/fonts
+SPDX-License-Identifier: GPL-3.0-or-later
diff --git a/src/modules/keyboardq/data/shift.svg b/src/modules/keyboardq/data/shift.svg
new file mode 100755 (executable)
index 0000000..825ba64
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<!-- Svg Vector Icons : http://www.onlinewebfonts.com/icon -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000" enable-background="new 0 0 1000 1000" xml:space="preserve">\r
+<metadata> Svg Vector Icons : http://www.onlinewebfonts.com/icon </metadata>\r
+<g><path fill="#FFFFFF" d="M987.8,489.5c-1.3-3.6-3.2-7.1-6.1-10L519.8,18.8c-0.2-0.2-0.2-0.4-0.4-0.6c-5.3-5.5-12.3-8.3-19.2-8.2c-6.9,0-13.9,2.7-19.2,8.2c-0.1,0.1-0.1,0.2-0.2,0.4L17.9,479.5c-10.6,10.9-10.6,28.7,0,39.7c5.3,5.6,12.4,8.3,19.4,8.2c0.1,0,0.2,0.1,0.4,0.1h217.7v435.3c0,15,12.2,27.2,27.2,27.2h435.3c15.1,0,27.2-12.2,27.2-27.2V527.4h217.7c15,0,27.2-12.2,27.2-27.2C990,496.4,989.2,492.8,987.8,489.5z M717.9,473c-15,0-27.2,12.2-27.2,27.2v435.3H309.8V500.2c0-15-12.2-27.2-27.2-27.2h-180L500.2,77.2l397,395.8H717.9z"/></g>\r
+</svg>\r
index 8f8bf05..1d59cf3 100644 (file)
-/* === This file is part of Calamares - <https://github.com/calamares> ===
+/* === This file is part of Calamares - <https://calamares.io> ===
  *
- *   SPDX-FileCopyrightText: 2020 Anke Boersma <demm@kaosx.us>
+ *   SPDX-FileCopyrightText: 2020 - 2021 Anke Boersma <demm@kaosx.us>
  *   SPDX-License-Identifier: GPL-3.0-or-later
  *
- *   Calamares is free software: you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation, either version 3 of the License, or
- *   (at your option) any later version.
+ *   Calamares is Free Software: see the License-Identifier above.
  *
- *   Calamares is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with Calamares. If not, see <http://www.gnu.org/licenses/>.
  */
 
 import io.calamares.core 1.0
 import io.calamares.ui 1.0
 
-import QtQuick 2.10
-import QtQuick.Controls 2.10
+import QtQuick 2.15
+import QtQuick.Controls 2.15
 import QtQuick.Window 2.14
 import QtQuick.Layouts 1.3
 
 import org.kde.kirigami 2.7 as Kirigami
+import "data"
 
-Page {
+Item {
     width: 800 //parent.width
-    height: 500
-
-     StackView {
-        id: stack
+    height: 600
+
+    readonly property color backgroundColor: "#E6E9EA" //Kirigami.Theme.backgroundColor
+    readonly property color listBackgroundColor: "white"
+    readonly property color textFieldColor: "#121212"
+    readonly property color textFieldBackgroundColor: "#F8F8F8"
+    readonly property color textColor: Kirigami.Theme.textColor
+    readonly property color highlightedTextColor: Kirigami.Theme.highlightedTextColor
+    readonly property color highlightColor: Kirigami.Theme.highlightColor
+
+    property var langXml: ["de", "en", "es", "fr", "ru",]
+    property var arXml: ["Arabic"]
+    property var ruXml: ["Azerba", "Belaru", "Kazakh", "Kyrgyz", "Mongol",
+        "Russia", "Tajik", "Ukrain"]
+    property var frXml: ["Bambar", "Belgia","French", "Wolof"]
+    property var enXml: ["Bikol", "Chines", "Englis", "Irish", "Lithua", "Maori"]
+    property var esXml: ["Spanis"]
+    property var deXml: ["German"]
+    property var ptXml: ["Portug"]
+    property var scanXml: ["Danish", "Finnis", "Norweg", "Swedis"]
+    property var afganiXml: ["Afghan"]
+    property var genericXml: ["Armeni", "Bulgar", "Dutch", "Estoni", "Icelan",
+        "Indone", "Italia", "Latvia", "Maltes", "Moldav", "Romani", "Swahil", "Turkis"]
+    property var genericQzXml: ["Albani", "Bosnia", "Croati", "Czech", "Hungar",
+        "Luxemb", "Monten", "Polish", "Serbia", "Sloven", "Slovak"]
+    property var genericAzXml: []
+
+    property var keyIndex: []
+
+    Rectangle {
+        id: backgroundItem
         anchors.fill: parent
-        clip: true
-
-        initialItem: Item {
+        color: backgroundColor
+
+        Label {
+            id: header
+            anchors.horizontalCenter: parent.horizontalCenter
+            text: qsTr("To activate keyboard preview, select a layout.")
+            color: textColor
+            font.bold: true
+        }
 
-            Label {
+        Label {
+            id: intro
+            anchors.horizontalCenter: parent.horizontalCenter
+            anchors.top: header.bottom
+            color: textColor
+            horizontalAlignment: Text.AlignHCenter
+            width: parent.width / 1.2
+            wrapMode: Text.WordWrap
+            text: ( config.prettyStatus)
+        }
 
-                id: header
-                anchors.horizontalCenter: parent.horizontalCenter
-                text: qsTr("Keyboard Model")
-                color: Kirigami.Theme.textColor
-                font.bold: true
-                font.weight: Font.Bold
-                font.pointSize: 24
-            }
+        RowLayout {
+            id: models
+            anchors.top: intro.bottom
+            anchors.topMargin: 10
+            anchors.horizontalCenter: parent.horizontalCenter
+            width: parent.width /1.5
+            spacing: 10
 
             Label {
-
-                anchors.horizontalCenter: parent.horizontalCenter
-                anchors.top: header.bottom
-                color: Kirigami.Theme.textColor
-                horizontalAlignment: Text.AlignHCenter
-                width: parent.width / 1.5
-                wrapMode: Text.WordWrap
-                text: qsTr("Click your preferred keyboard model to select layout and variant, or use the default one based on the detected hardware.")
+                Layout.alignment: Qt.AlignCenter
+                text: qsTr("Keyboard Model:")
+                color: textColor
+                font.bold: true
             }
 
-            ListView {
-
-                id: list1
-
-                ScrollBar.vertical: ScrollBar {
-
-                    active: true
-                }
-
-                width: parent.width / 2
-                height: 250
-                anchors.centerIn: parent
-                anchors.verticalCenterOffset: -30
-                focus: true
-                clip: true
-                boundsBehavior: Flickable.StopAtBounds
-                spacing: 2
-
-                Rectangle {
-
-                    z: parent.z - 1
-                    anchors.fill: parent
-                    color: "#BDC3C7"
-                    radius: 5
-                    opacity: 0.7
-                }
-
+            ComboBox {
+                Layout.fillWidth: true
+                textRole: "label"
                 model: config.keyboardModelsModel
-                //model: ["Africa", "America", "Antarctica", "Arctic", "Asia", "Atlantic", "Australia", "Europe", "Indian", "Pacific"]
-
                 currentIndex: model.currentIndex
-                delegate: ItemDelegate {
-
-                    hoverEnabled: true
-                    width: parent.width
-                    highlighted: ListView.isCurrentItem
-
-                    RowLayout {
-                        anchors.fill: parent
-
-                        Label {
-
-                            text: model.label // modelData
-                            Layout.fillHeight: true
-                            Layout.fillWidth: true
-                            width: parent.width
-                            height: 32
-                            color: highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor
-
-                            background: Rectangle {
-
-                                color: highlighted || hovered ? Kirigami.Theme.highlightColor : "white" //Kirigami.Theme.backgroundColor
-                                opacity: highlighted || hovered ? 0.5 : 0.3
-                            }
-                        }
-
-                        Kirigami.Icon {
-
-                            source: "checkmark"
-                            Layout.preferredWidth: 22
-                            Layout.preferredHeight: 22
-                            color: Kirigami.Theme.highlightedTextColor
-                            visible: highlighted
-                        }
-                    }
-
-                    onClicked: {
-
-                        list1.model.currentIndex = index
-                        stack.push(layoutsList)
-                        list1.positionViewAtIndex(index, ListView.Center)
-                    }
-                }
+                onCurrentIndexChanged: config.keyboardModels = currentIndex
             }
         }
 
-        Component {
-            id: layoutsList
-
-            Item {
-
-                Label {
+        StackView {
+            id: stack
+            anchors.top: models.bottom
+            anchors.topMargin: 10
+            anchors.left: parent.left
+            anchors.right: parent.right
+            anchors.bottom: parent.bottom
+            clip: true
 
-                id: header
-                anchors.horizontalCenter: parent.horizontalCenter
-                text: qsTr("Keyboard Layout")
-                color: Kirigami.Theme.textColor
-                font.bold: true
-                font.weight: Font.Bold
-                font.pointSize: 24
-                }
-
-                Label {
-
-                    anchors.horizontalCenter: parent.horizontalCenter
-                    anchors.top: header.bottom
-                    color: Kirigami.Theme.textColor
-                    horizontalAlignment: Text.AlignHCenter
-                    width: parent.width / 1.5
-                    wrapMode: Text.WordWrap
-                    text: config.prettyStatus
-                    //text: qsTr("Set keyboard model or use the default one based on the detected hardware.")
-                }
+            initialItem: Item {
 
                 ListView {
-
-                    id: list2
+                    id: layouts
 
                     ScrollBar.vertical: ScrollBar {
-
                         active: true
                     }
 
                     width: parent.width / 2
-                    height: 250
-                    anchors.centerIn: parent
-                    anchors.verticalCenterOffset: -30
+                    height: 200
+                    anchors.horizontalCenter: parent.horizontalCenter
                     focus: true
                     clip: true
                     boundsBehavior: Flickable.StopAtBounds
                     spacing: 2
 
                     Rectangle {
-
                         z: parent.z - 1
                         anchors.fill: parent
-                        color: "#BDC3C7"
-                        radius: 5
+                        color: listBackgroundColor
                         opacity: 0.7
                     }
 
                     model: config.keyboardLayoutsModel
-                    //model: ["Brussels", "London", "Madrid", "New York", "Melbourne", "London", "Madrid", "New York", "Brussels", "London", "Madrid", "New York", "Brussels", "London", "Madrid", "New York"]
-
                     currentIndex: model.currentIndex
+                    Component.onCompleted: positionViewAtIndex(model.currentIndex, ListView.Center)
                     delegate: ItemDelegate {
 
                         hoverEnabled: true
@@ -202,203 +140,169 @@ Page {
                         highlighted: ListView.isCurrentItem
 
                         RowLayout {
-                        anchors.fill: parent
+                            anchors.fill: parent
 
                             Label {
-
-                                text: model.label // modelData
+                                id: label1
+                                text: model.label
                                 Layout.fillHeight: true
                                 Layout.fillWidth: true
+                                padding: 10
                                 width: parent.width
-                                height: 30
-                                color: highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor
+                                height: 32
+                                color: highlighted ? highlightedTextColor : textColor
 
                                 background: Rectangle {
-
-                                    color: highlighted || hovered ? Kirigami.Theme.highlightColor : "white" //Kirigami.Theme.backgroundColor
+                                    color: highlighted || hovered ? highlightColor : listBackgroundColor
                                     opacity: highlighted || hovered ? 0.5 : 0.3
                                 }
                             }
-
-                            Kirigami.Icon {
-
-                                source: "checkmark"
-                                Layout.preferredWidth: 22
-                                Layout.preferredHeight: 22
-                                color: Kirigami.Theme.highlightedTextColor
-                                visible: highlighted
-                            }
                         }
 
                         onClicked: {
 
-                            list2.model.currentIndex = index
+                            layouts.model.currentIndex = index
+                            keyIndex = label1.text.substring(0,6)
                             stack.push(variantsList)
-                            list2.positionViewAtIndex(index, ListView.Center)
+                            layouts.positionViewAtIndex(index, ListView.Center)
                         }
                     }
                 }
+                Button {
 
-                ColumnLayout {
-
-                    spacing: 2
+                    Layout.fillWidth: true
                     anchors.verticalCenter: parent.verticalCenter
-                    anchors.verticalCenterOffset: -30
-                    anchors.left: parent.left 
+                    anchors.verticalCenterOffset: -parent.height / 3.5
+                    anchors.left: parent.left
                     anchors.leftMargin: parent.width / 15
-
-                    Button {
-
-                        icon.name: "go-previous"
-                        text: qsTr("Models")
-                        onClicked: stack.pop()
-                    }
-
-                    Button {
-
-                        icon.name: "go-next"
-                        text: qsTr("Variants")
-                        onClicked: stack.push(variantsList)
-                    }
+                    icon.name: "go-next"
+                    text: qsTr("Variants")
+                    onClicked: stack.push(variantsList)
                 }
             }
-        }
-
-        Component {
-            id: variantsList
-
-            Item {
-
-                Label {
-
-                    id: header
-                    anchors.horizontalCenter: parent.horizontalCenter
-                    text: qsTr("Keyboard Variant")
-                    color: Kirigami.Theme.textColor
-                    font.bold: true
-                    font.weight: Font.Bold
-                    font.pointSize: 24
-                }
-
-                Label {
-
-                    anchors.horizontalCenter: parent.horizontalCenter
-                    anchors.top: header.bottom
-                    color: Kirigami.Theme.textColor
-                    horizontalAlignment: Text.AlignHCenter
-                    width: parent.width / 1.5
-                    wrapMode: Text.WordWrap
-                    text: config.prettyStatus
-                    //text: qsTr("Variant keyboard model or use the default one based on the detected hardware.")
-                }
-
-                ListView {
-
-                    id: list3
-
-                    ScrollBar.vertical: ScrollBar {
-
-                        active: true
-                    }
 
-                    width: parent.width / 2
-                    height: 250
-                    anchors.centerIn: parent
-                    anchors.verticalCenterOffset: -30
-                    focus: true
-                    clip: true
-                    boundsBehavior: Flickable.StopAtBounds
-                    spacing: 2
-
-                    Rectangle {
-
-                        z: parent.z - 1
-                        anchors.fill: parent
-                        color: "#BDC3C7"
-                        radius: 5
-                        opacity: 0.7
-                    }
-
-                    model: config.keyboardVariantsModel
-                    //model: ["Brussels", "London", "Madrid", "New York", "Melbourne", "London", "Madrid", "New York", "Brussels", "London", "Madrid", "New York", "Brussels", "London", "Madrid", "New York"]
-
-                    currentIndex: model.currentIndex
-                    delegate: ItemDelegate {
+            Component {
+                id: variantsList
 
-                        hoverEnabled: true
-                        width: parent.width
-                        highlighted: ListView.isCurrentItem
+                Item {
 
-                        RowLayout {
-                        anchors.fill: parent
+                    ListView {
+                        id: variants
 
-                            Label {
+                        ScrollBar.vertical: ScrollBar {
+                            active: true
+                        }
 
-                                text: model.label //modelData
-                                Layout.fillHeight: true
-                                Layout.fillWidth: true
-                                width: parent.width
-                                height: 30
-                                color: highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor
+                        width: parent.width / 2
+                        height: 200
+                        anchors.horizontalCenter: parent.horizontalCenter
+                        anchors.topMargin: 10
+                        focus: true
+                        clip: true
+                        boundsBehavior: Flickable.StopAtBounds
+                        spacing: 2
+
+                        Rectangle {
+                            z: parent.z - 1
+                            anchors.fill: parent
+                            color: listBackgroundColor
+                            opacity: 0.7
+                        }
 
-                                background: Rectangle {
+                        model: config.keyboardVariantsModel
+                        currentIndex: model.currentIndex
+                        Component.onCompleted: positionViewAtIndex(model.currentIndex, ListView.Center)
 
-                                    color: highlighted || hovered ? Kirigami.Theme.highlightColor : "white" //Kirigami.Theme.backgroundColor
-                                    opacity: highlighted || hovered ? 0.5 : 0.3
+                        delegate: ItemDelegate {
+                            hoverEnabled: true
+                            width: parent.width
+                            highlighted: ListView.isCurrentItem
+
+                            RowLayout {
+                            anchors.fill: parent
+
+                                Label {
+                                    text: model.label
+                                    Layout.fillHeight: true
+                                    Layout.fillWidth: true
+                                    padding: 10
+                                    width: parent.width
+                                    height: 30
+                                    color: highlighted ? highlightedTextColor : textColor
+
+                                    background: Rectangle {
+                                        color: highlighted || hovered ? highlightColor : listBackgroundColor
+                                        opacity: highlighted || hovered ? 0.5 : 0.3
+                                    }
                                 }
                             }
 
-                            Kirigami.Icon {
-
-                                source: "checkmark"
-                                Layout.preferredWidth: 22
-                                Layout.preferredHeight: 22
-                                color: Kirigami.Theme.highlightedTextColor
-                                visible: highlighted
+                            onClicked: {
+                                variants.model.currentIndex = index
+                                variants.positionViewAtIndex(index, ListView.Center)
                             }
                         }
-
-                        onClicked: {
-
-                            list3.model.currentIndex = index
-                            list3.positionViewAtIndex(index, ListView.Center)
-                        }
                     }
-                }
-                
-                Button {
 
-                    Layout.fillWidth: true
-                    anchors.verticalCenter: parent.verticalCenter
-                    anchors.verticalCenterOffset: -30
-                    anchors.left: parent.left 
-                    anchors.leftMargin: parent.width / 15
-                    icon.name: "go-previous"
-                    text: qsTr("Layouts")
-                    onClicked: stack.pop()
+                    Button {
+                        Layout.fillWidth: true
+                        anchors.verticalCenter: parent.verticalCenter
+                        anchors.verticalCenterOffset: -parent.height / 3.5
+                        anchors.left: parent.left
+                        anchors.leftMargin: parent.width / 15
+                        icon.name: "go-previous"
+                        text: qsTr("Layouts")
+                        onClicked: stack.pop()
+                    }
                 }
             }
         }
-    }
 
-    TextField {
-
-        placeholderText: qsTr("Test your keyboard")
-        height: 48
-        width: parent.width / 1.5
-        horizontalAlignment: TextInput.AlignHCenter
-        anchors.horizontalCenter: parent.horizontalCenter
-        anchors.bottom: parent.bottom
-        anchors.bottomMargin: parent.height / 10
-        color: "#1F1F1F"
-
-        background:Rectangle {
+        TextField {
+            id: textInput
+            placeholderText: qsTr("Type here to test your keyboard")
+            height: 36
+            width: parent.width / 1.5
+            horizontalAlignment: TextInput.AlignHCenter
+            anchors.horizontalCenter: parent.horizontalCenter
+            anchors.bottom: keyboard.top
+            anchors.bottomMargin: parent.height / 25
+            color: textFieldColor
+
+            background:Rectangle {
+                z: parent.z - 1
+                anchors.fill: parent
+                color: textFieldBackgroundColor
+                radius: 2
+            }
+        }
 
-            z: parent.z - 1
-            anchors.fill: parent
-            color: "#BDC3C7"
-            radius: 2
-            opacity: 0.3
+        Keyboard {
+            id: keyboard
+            width: parent.width
+            height: parent.height / 3
+            anchors.bottom: parent.bottom
+            source: langXml.includes(keyIndex) ? (keyIndex + ".xml") :
+                afganiXml.includes(keyIndex) ? "afgani.xml" :
+                scanXml.includes(keyIndex) ? "scan.xml" :
+                genericXml.includes(keyIndex) ? "generic.xml" :
+                genericQzXml.includes(keyIndex) ? "generic_qz.xml" :
+                arXml.includes(keyIndex) ? "ar.xml" :
+                deXml.includes(keyIndex) ? "de.xml" :
+                enXml.includes(keyIndex) ? "en.xml" :
+                esXml.includes(keyIndex) ? "es.xml" :
+                frXml.includes(keyIndex) ? "fr.xml" :
+                ptXml.includes(keyIndex) ? "pt.xml" :
+                ruXml.includes(keyIndex) ? "ru.xml" :"empty.xml"
+            rows: 4
+            columns: 10
+            keyColor: "transparent"
+            keyPressedColorOpacity: 0.2
+            keyImageLeft: "button_bkg_left.png"
+            keyImageRight: "button_bkg_right.png"
+            keyImageCenter: "button_bkg_center.png"
+            target: textInput
+            onEnterClicked: console.log("Enter!")
         }
     }
 }