diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3aa0516e..7ab90aa3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -285,6 +285,7 @@ language_plugin(ca catalan src/overrides.csv)
language_plugin(cs czech)
language_plugin(da danish src/overrides.csv)
language_plugin(de german)
+language_plugin(de@terminal germanterminal)
language_plugin(el greek)
language_plugin(en english src/overrides.csv)
language_plugin(eo esperanto)
diff --git a/plugins/de@terminal/qml/Keyboard_de@terminal.qml b/plugins/de@terminal/qml/Keyboard_de@terminal.qml
new file mode 100644
index 00000000..ae05d2b3
--- /dev/null
+++ b/plugins/de@terminal/qml/Keyboard_de@terminal.qml
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2013 Canonical Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+import QtQuick 2.4
+
+import MaliitKeyboard 2.0
+
+import keys 1.0
+
+KeyPad {
+ anchors.fill: parent
+
+ content: c1
+ symbols: "languages/Keyboard_symbols.qml"
+
+ Column {
+ id: c1
+ anchors.fill: parent
+ spacing: 0
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter;
+ spacing: 0
+
+ TabKey { padding: 0 }
+ CharKey { label: "q"; shifted: "Q"; extended: ["1"]; extendedShifted: ["1"]; leftSide: true; }
+ CharKey { label: "w"; shifted: "W"; extended: ["2"]; extendedShifted: ["2"] }
+ CharKey { label: "e"; shifted: "E"; extended: ["3", "è", "é", "ë", "ê", "€"]; extendedShifted: ["3", "È","É", "Ë", "Ê", "€"] }
+ CharKey { label: "r"; shifted: "R"; extended: ["4"]; extendedShifted: ["4"] }
+ CharKey { label: "t"; shifted: "T"; extended: ["5", "þ"]; extendedShifted: ["5", "Þ"] }
+ CharKey { label: "z"; shifted: "Z"; extended: ["6"]; extendedShifted: ["6"] }
+ CharKey { label: "u"; shifted: "U"; extended: ["7", "ü","ù","ú","û"]; extendedShifted: ["7", "Ü","Ù","Ú","Û"] }
+ CharKey { label: "i"; shifted: "I"; extended: ["8", "ì","í","î","ï","ı"]; extendedShifted: ["8", "Ì","Í","Î","Ï","İ"] }
+ CharKey { label: "o"; shifted: "O"; extended: ["9", "ö","ò","ó","ô","õ","ø"]; extendedShifted: ["9", "Ö","Ò","Ó","Ô","Õ","Ø"] }
+ CharKey { label: "p"; shifted: "P"; extended: ["0"]; extendedShifted: ["0"]; rightSide: true; }
+ }
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter;
+ spacing: 0
+
+ CapsLockKey { padding: 0 }
+ CharKey { label: "a"; shifted: "A"; extended: ["ä","à","á","ã","â","å","æ"]; extendedShifted: ["Ä","À","Â","Á","Ã","Å","Æ"] }
+ CharKey { label: "s"; shifted: "S"; extended: ["ß","ş","$"]; extendedShifted: ["ẞ","Ş","$"] }
+ CharKey { label: "d"; shifted: "D"; }
+ CharKey { label: "f"; shifted: "F"; }
+ CharKey { label: "g"; shifted: "G"; extended: ["ğ"]; extendedShifted: ["Ğ"]; }
+ CharKey { label: "h"; shifted: "H"; }
+ CharKey { label: "j"; shifted: "J"; }
+ CharKey { label: "k"; shifted: "K"; }
+ CharKey { label: "l"; shifted: "L"; extended: ["ł","£"]; extendedShifted: ["Ł","£"] }
+ CharKey { label: "ü"; shifted: "Ü"; rightSide: true; }
+ }
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter;
+ spacing: 0
+
+ ShiftKey { padding: 0 }
+ CharKey { label: "y"; shifted: "Y"; extended: ["ÿ","¥"]; extendedShifted: ["Ÿ","¥"] }
+ CharKey { label: "x"; shifted: "X"; }
+ CharKey { label: "c"; shifted: "C"; extended: ["ç","¢"]; extendedShifted: ["Ç","¢"] }
+ CharKey { label: "v"; shifted: "V"; }
+ CharKey { label: "b"; shifted: "B"; }
+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
+ CharKey { label: "m"; shifted: "M"; }
+ CharKey { label: "ä"; shifted: "Ä"; }
+ BackspaceKey { padding: 0 }
+ }
+
+ Item {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ height: panel.keyHeight + Device.row_margin;
+
+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; height: parent.height; }
+ LanguageKey { id: languageMenuButton; anchors.left: symShiftKey.right; height: parent.height; }
+ CharKey { id: commaKey; label: ","; shifted: ","; extended: ["'", "\"", ";", ":", "@", "&", "(", ")"]; extendedShifted: ["'", "\"", ";", ":", "@", "&", "(", ")"]; anchors.left: languageMenuButton.right; height: parent.height; }
+ SpaceKey { id: spaceKey; anchors.left: commaKey.right; anchors.right: dotKey.left; noMagnifier: true; height: parent.height; }
+ CharKey { id: dotKey; label: "."; shifted: "."; extended: ["?", "-", "_", "!", "+", "%","#","/"]; extendedShifted: ["?", "-", "_", "!", "+", "%","#","/"]; anchors.right: umlaut.left; height: parent.height; }
+ CharKey { id: umlaut; label: "ö"; shifted: "Ö"; anchors.right: enterKey.left; height: parent.height; }
+ ReturnKey { id: enterKey; anchors.right: parent.right; height: parent.height; }
+ }
+ } // column
+}
diff --git a/plugins/de@terminal/qml/Keyboard_de@terminal_email.qml b/plugins/de@terminal/qml/Keyboard_de@terminal_email.qml
new file mode 100644
index 00000000..8d6a9153
--- /dev/null
+++ b/plugins/de@terminal/qml/Keyboard_de@terminal_email.qml
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2013 Canonical Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+import QtQuick 2.4
+
+import MaliitKeyboard 2.0
+
+import keys 1.0
+
+KeyPad {
+ anchors.fill: parent
+
+ content: c1
+ symbols: "languages/Keyboard_symbols.qml"
+
+ Column {
+ id: c1
+ anchors.fill: parent
+ spacing: 0
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter;
+ spacing: 0
+
+ CharKey { label: "q"; shifted: "Q"; extended: ["1"]; extendedShifted: ["1"]; leftSide: true; }
+ CharKey { label: "w"; shifted: "W"; extended: ["2"]; extendedShifted: ["2"] }
+ CharKey { label: "e"; shifted: "E"; extended: ["3", "è", "é", "ë", "ê", "€"]; extendedShifted: ["3", "È","É", "Ë", "Ê", "€"] }
+ CharKey { label: "r"; shifted: "R"; extended: ["4"]; extendedShifted: ["4"] }
+ CharKey { label: "t"; shifted: "T"; extended: ["5", "þ"]; extendedShifted: ["5", "Þ"] }
+ CharKey { label: "z"; shifted: "Z"; extended: ["6"]; extendedShifted: ["6"] }
+ CharKey { label: "u"; shifted: "U"; extended: ["7", "ü","ù","ú","û"]; extendedShifted: ["7", "Ü","Ù","Ú","Û"] }
+ CharKey { label: "i"; shifted: "I"; extended: ["8", "ì","í","î","ï","ı"]; extendedShifted: ["8", "Ì","Í","Î","Ï","İ"] }
+ CharKey { label: "o"; shifted: "O"; extended: ["9", "ö","ò","ó","ô","õ","ø"]; extendedShifted: ["9", "Ö","Ò","Ó","Ô","Õ","Ø"] }
+ CharKey { label: "p"; shifted: "P"; extended: ["0"]; extendedShifted: ["0"]; rightSide: true; }
+ }
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter;
+ spacing: 0
+
+ CharKey { label: "a"; shifted: "A"; extended: ["ä","à","á","ã","â","å","æ"]; extendedShifted: ["Ä","À","Â","Á","Ã","Å","Æ"]; leftSide: true; }
+ CharKey { label: "s"; shifted: "S"; extended: ["ß","ş","$"]; extendedShifted: ["ẞ","Ş","$"] }
+ CharKey { label: "d"; shifted: "D"; }
+ CharKey { label: "f"; shifted: "F"; }
+ CharKey { label: "g"; shifted: "G"; extended: ["ğ"]; extendedShifted: ["Ğ"]; }
+ CharKey { label: "h"; shifted: "H"; }
+ CharKey { label: "j"; shifted: "J"; }
+ CharKey { label: "k"; shifted: "K"; }
+ CharKey { label: "l"; shifted: "L"; extended: ["ł","£"]; extendedShifted: ["Ł","£"] }
+ CharKey { label: "ü"; shifted: "Ü"; rightSide: true; }
+ }
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter;
+ spacing: 0
+
+ ShiftKey { padding: 0 }
+ CharKey { label: "y"; shifted: "Y"; extended: ["ÿ","¥"]; extendedShifted: ["Ÿ","¥"] }
+ CharKey { label: "x"; shifted: "X"; }
+ CharKey { label: "c"; shifted: "C"; extended: ["ç","¢"]; extendedShifted: ["Ç","¢"] }
+ CharKey { label: "v"; shifted: "V"; }
+ CharKey { label: "b"; shifted: "B"; }
+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
+ CharKey { label: "m"; shifted: "M"; }
+ CharKey { label: "ä"; shifted: "Ä"; }
+ BackspaceKey { padding: 0 }
+ }
+
+ Item {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ height: panel.keyHeight + Device.row_margin;
+
+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; height: parent.height; }
+ LanguageKey { id: languageMenuButton; anchors.left: symShiftKey.right; height: parent.height; }
+ CharKey { id: atKey; label: "@"; shifted: "@"; anchors.left: languageMenuButton.right; height: parent.height; }
+ SpaceKey { id: spaceKey; anchors.left: atKey.right; anchors.right: urlKey.left; noMagnifier: true; height: parent.height; }
+ UrlKey { id: urlKey; label: ".de"; extended: [".com", ".at", ".ch"]; anchors.right: dotKey.left; height: parent.height; }
+ CharKey { id: dotKey; label: "."; shifted: "."; extended: ["?", "-", "_", "!", "+", "%","#","/"]; extendedShifted: ["?", "-", "_", "!", "+", "%","#","/"]; anchors.right: umlaut.left; height: parent.height; }
+ CharKey { id: umlaut; label: "ö"; shifted: "Ö"; anchors.right: enterKey.left; height: parent.height; }
+ ReturnKey { id: enterKey; anchors.right: parent.right; height: parent.height; }
+ }
+ } // column
+}
diff --git a/plugins/de@terminal/qml/Keyboard_de@terminal_url.qml b/plugins/de@terminal/qml/Keyboard_de@terminal_url.qml
new file mode 100644
index 00000000..e0211eac
--- /dev/null
+++ b/plugins/de@terminal/qml/Keyboard_de@terminal_url.qml
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2013 Canonical Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+import QtQuick 2.4
+
+import MaliitKeyboard 2.0
+
+import keys 1.0
+
+KeyPad {
+ anchors.fill: parent
+
+ content: c1
+ symbols: "languages/Keyboard_symbols.qml"
+
+ Column {
+ id: c1
+ anchors.fill: parent
+ spacing: 0
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter;
+ spacing: 0
+
+ CharKey { label: "q"; shifted: "Q"; extended: ["1"]; extendedShifted: ["1"]; leftSide: true; }
+ CharKey { label: "w"; shifted: "W"; extended: ["2"]; extendedShifted: ["2"] }
+ CharKey { label: "e"; shifted: "E"; extended: ["3", "è", "é", "ë", "ê", "€"]; extendedShifted: ["3", "È","É", "Ë", "Ê", "€"] }
+ CharKey { label: "r"; shifted: "R"; extended: ["4"]; extendedShifted: ["4"] }
+ CharKey { label: "t"; shifted: "T"; extended: ["5", "þ"]; extendedShifted: ["5", "Þ"] }
+ CharKey { label: "z"; shifted: "Z"; extended: ["6"]; extendedShifted: ["6"] }
+ CharKey { label: "u"; shifted: "U"; extended: ["7", "ü","ù","ú","û"]; extendedShifted: ["7", "Ü","Ù","Ú","Û"] }
+ CharKey { label: "i"; shifted: "I"; extended: ["8", "ì","í","î","ï","ı"]; extendedShifted: ["8", "Ì","Í","Î","Ï","İ"] }
+ CharKey { label: "o"; shifted: "O"; extended: ["9", "ö","ò","ó","ô","õ","ø"]; extendedShifted: ["9", "Ö","Ò","Ó","Ô","Õ","Ø"] }
+ CharKey { label: "p"; shifted: "P"; extended: ["0"]; extendedShifted: ["0"]; rightSide: true; }
+ }
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter;
+ spacing: 0
+
+ CharKey { label: "a"; shifted: "A"; extended: ["ä","à","á","ã","â","å","æ"]; extendedShifted: ["Ä","À","Â","Á","Ã","Å","Æ"]; leftSide: true; }
+ CharKey { label: "s"; shifted: "S"; extended: ["ß","ş","$"]; extendedShifted: ["ẞ","Ş","$"] }
+ CharKey { label: "d"; shifted: "D"; }
+ CharKey { label: "f"; shifted: "F"; }
+ CharKey { label: "g"; shifted: "G"; extended: ["ğ"]; extendedShifted: ["Ğ"]; }
+ CharKey { label: "h"; shifted: "H"; }
+ CharKey { label: "j"; shifted: "J"; }
+ CharKey { label: "k"; shifted: "K"; }
+ CharKey { label: "l"; shifted: "L"; extended: ["ł","£"]; extendedShifted: ["Ł","£"] }
+ CharKey { label: "ü"; shifted: "Ü"; rightSide: true; }
+ }
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter;
+ spacing: 0
+
+ ShiftKey { padding: 0 }
+ CharKey { label: "y"; shifted: "Y"; extended: ["ÿ","¥"]; extendedShifted: ["Ÿ","¥"] }
+ CharKey { label: "x"; shifted: "X"; }
+ CharKey { label: "c"; shifted: "C"; extended: ["ç","¢"]; extendedShifted: ["Ç","¢"] }
+ CharKey { label: "v"; shifted: "V"; }
+ CharKey { label: "b"; shifted: "B"; }
+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
+ CharKey { label: "m"; shifted: "M"; }
+ CharKey { label: "ä"; shifted: "Ä"; }
+ BackspaceKey { padding: 0 }
+ }
+
+ Item {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ height: panel.keyHeight + Device.row_margin;
+
+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; height: parent.height; }
+ LanguageKey { id: languageMenuButton; anchors.left: symShiftKey.right; height: parent.height; }
+ CharKey { id: slashKey; label: "/"; shifted: "/"; anchors.left: languageMenuButton.right; height: parent.height; }
+ UrlKey { id: urlKey; label: ".de"; extended: [".com", ".at", ".ch"]; anchors.right: dotKey.left; height: parent.height; }
+ CharKey { id: dotKey; label: "."; shifted: "."; extended: ["?", "-", "_", "!", "+", "%","#","/"]; extendedShifted: ["?", "-", "_", "!", "+", "%","#","/"]; anchors.right: umlaut.left; height: parent.height; }
+ CharKey { id: umlaut; label: "ö"; shifted: "Ö"; anchors.right: enterKey.left; height: parent.height; }
+ ReturnKey { id: enterKey; anchors.right: parent.right; height: parent.height; }
+ }
+ } // column
+}
diff --git a/plugins/de@terminal/qml/Keyboard_de@terminal_url_search.qml b/plugins/de@terminal/qml/Keyboard_de@terminal_url_search.qml
new file mode 100644
index 00000000..f7c2672e
--- /dev/null
+++ b/plugins/de@terminal/qml/Keyboard_de@terminal_url_search.qml
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2013 Canonical Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; version 3.
+ *
+ * This program 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 Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see .
+ */
+
+import QtQuick 2.4
+
+import MaliitKeyboard 2.0
+
+import keys 1.0
+
+KeyPad {
+ anchors.fill: parent
+
+ content: c1
+ symbols: "languages/Keyboard_symbols.qml"
+
+ Column {
+ id: c1
+ anchors.fill: parent
+ spacing: 0
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter;
+ spacing: 0
+
+ CharKey { label: "q"; shifted: "Q"; extended: ["1"]; extendedShifted: ["1"]; leftSide: true; }
+ CharKey { label: "w"; shifted: "W"; extended: ["2"]; extendedShifted: ["2"] }
+ CharKey { label: "e"; shifted: "E"; extended: ["3", "è", "é", "ë", "ê", "€"]; extendedShifted: ["3", "È","É", "Ë", "Ê", "€"] }
+ CharKey { label: "r"; shifted: "R"; extended: ["4"]; extendedShifted: ["4"] }
+ CharKey { label: "t"; shifted: "T"; extended: ["5", "þ"]; extendedShifted: ["5", "Þ"] }
+ CharKey { label: "z"; shifted: "Z"; extended: ["6"]; extendedShifted: ["6"] }
+ CharKey { label: "u"; shifted: "U"; extended: ["7", "ü","ù","ú","û"]; extendedShifted: ["7", "Ü","Ù","Ú","Û"] }
+ CharKey { label: "i"; shifted: "I"; extended: ["8", "ì","í","î","ï","ı"]; extendedShifted: ["8", "Ì","Í","Î","Ï","İ"] }
+ CharKey { label: "o"; shifted: "O"; extended: ["9", "ö","ò","ó","ô","õ","ø"]; extendedShifted: ["9", "Ö","Ò","Ó","Ô","Õ","Ø"] }
+ CharKey { label: "p"; shifted: "P"; extended: ["0"]; extendedShifted: ["0"]; rightSide: true; }
+ }
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter;
+ spacing: 0
+
+ CharKey { label: "a"; shifted: "A"; extended: ["ä","à","á","ã","â","å","æ"]; extendedShifted: ["Ä","À","Â","Á","Ã","Å","Æ"]; leftSide: true; }
+ CharKey { label: "s"; shifted: "S"; extended: ["ß","ş","$"]; extendedShifted: ["ẞ","Ş","$"] }
+ CharKey { label: "d"; shifted: "D"; }
+ CharKey { label: "f"; shifted: "F"; }
+ CharKey { label: "g"; shifted: "G"; extended: ["ğ"]; extendedShifted: ["Ğ"]; }
+ CharKey { label: "h"; shifted: "H"; }
+ CharKey { label: "j"; shifted: "J"; }
+ CharKey { label: "k"; shifted: "K"; }
+ CharKey { label: "l"; shifted: "L"; extended: ["ł","£"]; extendedShifted: ["Ł","£"] }
+ CharKey { label: "ü"; shifted: "Ü"; rightSide: true; }
+ }
+
+ Row {
+ anchors.horizontalCenter: parent.horizontalCenter;
+ spacing: 0
+
+ ShiftKey { padding: 0 }
+ CharKey { label: "y"; shifted: "Y"; extended: ["ÿ","¥"]; extendedShifted: ["Ÿ","¥"] }
+ CharKey { label: "x"; shifted: "X"; }
+ CharKey { label: "c"; shifted: "C"; extended: ["ç","¢"]; extendedShifted: ["Ç","¢"] }
+ CharKey { label: "v"; shifted: "V"; }
+ CharKey { label: "b"; shifted: "B"; }
+ CharKey { label: "n"; shifted: "N"; extended: ["ñ"]; extendedShifted: ["Ñ"] }
+ CharKey { label: "m"; shifted: "M"; }
+ CharKey { label: "ä"; shifted: "Ä"; }
+ BackspaceKey { padding: 0 }
+ }
+
+ Item {
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ height: panel.keyHeight + Device.row_margin;
+
+ SymbolShiftKey { id: symShiftKey; anchors.left: parent.left; height: parent.height; }
+ LanguageKey { id: languageMenuButton; anchors.left: symShiftKey.right; height: parent.height; }
+ CharKey { id: slashKey; label: "/"; shifted: "/"; anchors.left: languageMenuButton.right; height: parent.height; }
+ SpaceKey { id: spaceKey; anchors.left: slashKey.right; anchors.right: urlKey.left; noMagnifier: true; height: parent.height; }
+ UrlKey { id: urlKey; label: ".de"; extended: [".com", ".at", ".ch"]; anchors.right: dotKey.left; height: parent.height; }
+ CharKey { id: dotKey; label: "."; shifted: "."; extended: ["?", "-", "_", "!", "+", "%","#","/"]; extendedShifted: ["?", "-", "_", "!", "+", "%","#","/"]; anchors.right: umlaut.left; height: parent.height; }
+ CharKey { id: umlaut; label: "ö"; shifted: "Ö"; anchors.right: enterKey.left; height: parent.height; }
+ ReturnKey { id: enterKey; anchors.right: parent.right; height: parent.height; }
+ }
+ } // column
+}
diff --git a/plugins/de@terminal/src/germanterminalplugin.h b/plugins/de@terminal/src/germanterminalplugin.h
new file mode 100644
index 00000000..4bac9968
--- /dev/null
+++ b/plugins/de@terminal/src/germanterminalplugin.h
@@ -0,0 +1,25 @@
+#ifndef GERMANTERMINALPLUGIN_H
+#define GERMANTERMINALPLUGIN_H
+
+#include
+#include "languageplugininterface.h"
+#include "westernlanguagesplugin.h"
+
+class GermanTerminalPlugin : public WesternLanguagesPlugin
+{
+ Q_OBJECT
+ Q_INTERFACES(LanguagePluginInterface)
+ Q_PLUGIN_METADATA(IID "io.maliit.keyboard.LanguagePlugin.1" FILE "germanterminalplugin.json")
+
+public:
+ explicit GermanTerminalPlugin(QObject* parent = 0)
+ : WesternLanguagesPlugin(parent)
+ {
+ }
+
+ virtual ~GermanTerminalPlugin()
+ {
+ }
+};
+
+#endif // GERMANTERMINALPLUGIN_H
diff --git a/plugins/de@terminal/src/germanterminalplugin.json b/plugins/de@terminal/src/germanterminalplugin.json
new file mode 100644
index 00000000..258ea63b
--- /dev/null
+++ b/plugins/de@terminal/src/germanterminalplugin.json
@@ -0,0 +1,5 @@
+{
+ "IID": "io.maliit.keyboard.LanguagePlugin.1",
+ "LanguageId": "de@terminal",
+ "Language": "German (Terminal)"
+}
diff --git a/qml/keys/languages.js b/qml/keys/languages.js
index 89fcc0cd..d45a09d7 100644
--- a/qml/keys/languages.js
+++ b/qml/keys/languages.js
@@ -16,47 +16,48 @@
function languageIdToName(languageId)
{
- if (languageId == "ar") return Gettext.qsTr("Arabic");
- if (languageId == "az") return Gettext.qsTr("Azerbaijani");
- if (languageId == "be") return Gettext.qsTr("Belarusian");
- if (languageId == "bg") return Gettext.qsTr("Bulgarian");
- if (languageId == "bs") return Gettext.qsTr("Bosnian");
- if (languageId == "ca") return Gettext.qsTr("Catalan");
- if (languageId == "cs") return Gettext.qsTr("Czech");
- if (languageId == "da") return Gettext.qsTr("Danish");
- if (languageId == "de") return Gettext.qsTr("German");
- if (languageId == "el") return Gettext.qsTr("Greek");
- if (languageId == "en") return Gettext.qsTr("English");
- if (languageId == "en@dv") return Gettext.qsTr("English\n(Dvorak)");
- if (languageId == "eo") return Gettext.qsTr("Esperanto");
- if (languageId == "es") return Gettext.qsTr("Spanish");
- if (languageId == "fa") return Gettext.qsTr("Persian");
- if (languageId == "fi") return Gettext.qsTr("Finnish");
- if (languageId == "fr") return Gettext.qsTr("French");
- if (languageId == "fr-ch") return Gettext.qsTr("French\n(Swiss)");
- if (languageId == "gd") return Gettext.qsTr("Scottish Gaelic");
- if (languageId == "he") return Gettext.qsTr("Hebrew");
- if (languageId == "hr") return Gettext.qsTr("Croatian");
- if (languageId == "hu") return Gettext.qsTr("Hungarian");
- if (languageId == "is") return Gettext.qsTr("Icelandic");
- if (languageId == "it") return Gettext.qsTr("Italian");
- if (languageId == "ja") return Gettext.qsTr("Japanese");
- if (languageId == "lt") return Gettext.qsTr("Lithuanian");
- if (languageId == "lv") return Gettext.qsTr("Latvian");
- if (languageId == "mk") return Gettext.qsTr("Macedonian");
- if (languageId == "ko") return Gettext.qsTr("Korean");
- if (languageId == "nl") return Gettext.qsTr("Dutch");
- if (languageId == "nb") return Gettext.qsTr("Norwegian");
- if (languageId == "pl") return Gettext.qsTr("Polish");
- if (languageId == "pt") return Gettext.qsTr("Portuguese");
- if (languageId == "ro") return Gettext.qsTr("Romanian");
- if (languageId == "ru") return Gettext.qsTr("Russian");
- if (languageId == "sl") return Gettext.qsTr("Slovenian");
- if (languageId == "sr") return Gettext.qsTr("Serbian");
- if (languageId == "sv") return Gettext.qsTr("Swedish");
- if (languageId == "th") return Gettext.qsTr("Thai");
- if (languageId == "tr") return Gettext.qsTr("Turkish");
- if (languageId == "uk") return Gettext.qsTr("Ukrainian");
+ if (languageId == "ar") return Gettext.qsTr("Arabic");
+ if (languageId == "az") return Gettext.qsTr("Azerbaijani");
+ if (languageId == "be") return Gettext.qsTr("Belarusian");
+ if (languageId == "bg") return Gettext.qsTr("Bulgarian");
+ if (languageId == "bs") return Gettext.qsTr("Bosnian");
+ if (languageId == "ca") return Gettext.qsTr("Catalan");
+ if (languageId == "cs") return Gettext.qsTr("Czech");
+ if (languageId == "da") return Gettext.qsTr("Danish");
+ if (languageId == "de") return Gettext.qsTr("German");
+ if (languageId == "de@terminal") return Gettext.qsTr("German\n(Terminal)");
+ if (languageId == "el") return Gettext.qsTr("Greek");
+ if (languageId == "en") return Gettext.qsTr("English");
+ if (languageId == "en@dv") return Gettext.qsTr("English\n(Dvorak)");
+ if (languageId == "eo") return Gettext.qsTr("Esperanto");
+ if (languageId == "es") return Gettext.qsTr("Spanish");
+ if (languageId == "fa") return Gettext.qsTr("Persian");
+ if (languageId == "fi") return Gettext.qsTr("Finnish");
+ if (languageId == "fr") return Gettext.qsTr("French");
+ if (languageId == "fr-ch") return Gettext.qsTr("French\n(Swiss)");
+ if (languageId == "gd") return Gettext.qsTr("Scottish Gaelic");
+ if (languageId == "he") return Gettext.qsTr("Hebrew");
+ if (languageId == "hr") return Gettext.qsTr("Croatian");
+ if (languageId == "hu") return Gettext.qsTr("Hungarian");
+ if (languageId == "is") return Gettext.qsTr("Icelandic");
+ if (languageId == "it") return Gettext.qsTr("Italian");
+ if (languageId == "ja") return Gettext.qsTr("Japanese");
+ if (languageId == "lt") return Gettext.qsTr("Lithuanian");
+ if (languageId == "lv") return Gettext.qsTr("Latvian");
+ if (languageId == "mk") return Gettext.qsTr("Macedonian");
+ if (languageId == "ko") return Gettext.qsTr("Korean");
+ if (languageId == "nl") return Gettext.qsTr("Dutch");
+ if (languageId == "nb") return Gettext.qsTr("Norwegian");
+ if (languageId == "pl") return Gettext.qsTr("Polish");
+ if (languageId == "pt") return Gettext.qsTr("Portuguese");
+ if (languageId == "ro") return Gettext.qsTr("Romanian");
+ if (languageId == "ru") return Gettext.qsTr("Russian");
+ if (languageId == "sl") return Gettext.qsTr("Slovenian");
+ if (languageId == "sr") return Gettext.qsTr("Serbian");
+ if (languageId == "sv") return Gettext.qsTr("Swedish");
+ if (languageId == "th") return Gettext.qsTr("Thai");
+ if (languageId == "tr") return Gettext.qsTr("Turkish");
+ if (languageId == "uk") return Gettext.qsTr("Ukrainian");
if (languageId == "zh-hans") return Gettext.qsTr("Chinese\n(Pinyin)");
if (languageId == "zh-hant") return Gettext.qsTr("Chinese\n(Chewing)");
diff --git a/qml/keys/qmldir b/qml/keys/qmldir
index 83f5a39e..19701e00 100644
--- a/qml/keys/qmldir
+++ b/qml/keys/qmldir
@@ -29,3 +29,4 @@ EndKey 1.0 EndKey.qml
PageUpKey 1.0 PageUpKey.qml
PageDownKey 1.0 PageDownKey.qml
CapsLockKey 1.0 CapsLockKey.qml
+ControlKey 1.0 ControlKey.qml
diff --git a/src/lib/logic/eventhandler.cpp b/src/lib/logic/eventhandler.cpp
index 63f3a645..b6dc413e 100644
--- a/src/lib/logic/eventhandler.cpp
+++ b/src/lib/logic/eventhandler.cpp
@@ -101,6 +101,16 @@ void EventHandler::onKeyReleased(QString label, QString action)
key.setAction(Key::ActionHome);
else if (action == QLatin1String("end"))
key.setAction(Key::ActionEnd);
+ else if (action == QLatin1String("tab"))
+ key.setAction(Key::ActionTab);
+ else if (action == QLatin1String("ctrl"))
+ key.setAction(Key::ActionControl);
+ else if (action == QLatin1String("escape"))
+ key.setAction(Key::ActionEscape);
+ else if (action == QLatin1String("pageeup"))
+ key.setAction(Key::ActionPageUp);
+ else if (action == QLatin1String("pageeup"))
+ key.setAction(Key::ActionPageDown);
else if (action == "keysequence") {
key.setCommandSequence(label);
key.setAction(Key::ActionKeySequence);
diff --git a/src/lib/models/key.h b/src/lib/models/key.h
index ae0cf832..48229069 100644
--- a/src/lib/models/key.h
+++ b/src/lib/models/key.h
@@ -75,6 +75,8 @@ class Key
ActionEscape, //!< Key sends Escape
ActionPageUp, //!< Key sends PageUp
ActionPageDown, //!< Key sends PageDown
+ ActionControl, //!< Key sends Control
+ ActionCapsLock, //!< Key sends CapsLock
NumActions
};
diff --git a/src/view/abstracttexteditor.cpp b/src/view/abstracttexteditor.cpp
index c549d228..2153b2ed 100644
--- a/src/view/abstracttexteditor.cpp
+++ b/src/view/abstracttexteditor.cpp
@@ -658,6 +658,14 @@ void AbstractTextEditor::onKeyReleased(const Key &key)
event_key = Qt::Key_Tab;
break;
+ case Key::ActionControl:
+ event_key = Qt::Key_Control;
+ break;
+
+ case Key::ActionCapsLock:
+ event_key = Qt::Key_CapsLock;
+ break;
+
default:
break;
}