Skip to content
This repository has been archived by the owner on Jul 9, 2021. It is now read-only.

add a Flick layout #128

Closed
wants to merge 57 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
0524197
implement qertyu flick keyboard
Fuseteam Aug 29, 2019
af72d2f
alter caps button
Sep 16, 2019
4bd7a70
improve cursorkey labels
Sep 16, 2019
28f2a1b
hide all labels in cursor mode
Sep 16, 2019
48d57b6
improve layout based on feedback
Sep 16, 2019
b04074b
final tweaks layout
Sep 17, 2019
8b908a5
more tweaks and bug fixes (#8)
Fuseteam Nov 16, 2019
d67b32e
apply cross shaped layout and fix keys overlapping in landscape mode
Danfro Nov 18, 2019
c104f16
fixed japanese layout regression
Fuseteam Nov 19, 2019
7c4a6b6
basis for FlickActionKeys kudos to Johannes Renkl
Nov 22, 2019
22f51ed
get the positioning of the 5 icon right, kudos to Daniel Frost
Fuseteam Nov 26, 2019
5ab828a
fix alignment and sizing
Dec 1, 2019
62e454f
set basis for icons in flickPop
Dec 1, 2019
f9fa0c0
push correct version for commit 51a6eea2
Dec 1, 2019
5fdefde
fix flickpopkey
Fuseteam Feb 18, 2020
c1e5b5f
fix sizing Stringkey
Fuseteam Feb 19, 2020
3f8b2c7
fix qml icon errors
Fuseteam Feb 20, 2020
2e0ce28
fixed Popup on Flickaction
Fuseteam Feb 20, 2020
92f614f
clean up old code
Fuseteam Apr 27, 2020
5a04117
merge flickactionkey into flickcharkey
Fuseteam Apr 27, 2020
ddcbcaf
pull updates from danfro's crosslayout
Fuseteam Nov 19, 2019
ea652cf
fix indentation
Fuseteam Nov 19, 2019
a24fe0a
clean up code
Fuseteam Apr 29, 2020
3184097
add accents to the keyboard
Fuseteam Apr 29, 2020
f581bf7
clean up code
Fuseteam Apr 30, 2020
3842465
more symbols!
Fuseteam Apr 30, 2020
6fc23e2
upgrade flickey with the shifted keypadstate
Fuseteam May 4, 2020
4ae5e08
add a emoji icon on the symojikey
Fuseteam May 6, 2020
ba9a635
fix bind loop on source for accents layout
Fuseteam May 6, 2020
fc3b595
allow the caseswitchkey to function as shiftkey
Fuseteam May 10, 2020
768942f
fix stringkey sizing
Fuseteam May 10, 2020
3665a7c
standardize symojikey relative to caseswitchkey
Fuseteam May 10, 2020
b8bd0d7
flesh out the accents layout
Fuseteam May 11, 2020
8091c8e
layout tweaks
Fuseteam May 11, 2020
221800b
get symoji and caseswitchkey to follow the same convention
Fuseteam May 11, 2020
e991fc9
ship plugin lib for english flick
Fuseteam Dec 19, 2020
58191f0
optimize layout code
Fuseteam Dec 21, 2020
69981d3
clean trailing spaces
Fuseteam Dec 21, 2020
87f8598
fix syntax error and remove redundant code
Fuseteam Jan 8, 2021
15471f1
swap the @ and ~ keys
Fuseteam Mar 12, 2021
84001bb
fix the bottomleft column to the button left
Fuseteam Mar 27, 2021
7e75663
replace anchors with layout.alignment where applicable
Fuseteam Mar 27, 2021
babe654
increasing sizing of leaves symojikey
Fuseteam Mar 27, 2021
2f4e3b3
add disabled icons in the keys
Fuseteam Dec 21, 2020
df20d4b
refactor Symoji key
Fuseteam Mar 27, 2021
4dec115
fix icon for emoji action
Fuseteam Mar 27, 2021
d345b5e
switch to the "signs" accents layout (only) on flick up
Fuseteam Mar 27, 2021
6eb914a
add disabled icon for flick up
Fuseteam Mar 28, 2021
6337602
fix symoji key sizing
Fuseteam Mar 29, 2021
d991a1e
fix emoji switch
Fuseteam Mar 31, 2021
278324e
switch to the "marks" layout on flick down on the symojikey
Fuseteam Mar 31, 2021
80a9c7b
fix bugs
Fuseteam Mar 31, 2021
11f4642
fix bug when inputing < and &
Fuseteam Apr 6, 2021
15f2300
change symoji's behavior when there is only one layout
Fuseteam Apr 6, 2021
bd1bc26
fix icon source path
Fuseteam Apr 7, 2021
b7896dc
change the "accents" state to lower case
Fuseteam Apr 7, 2021
35736cc
change the case for emoji to lowercase
Fuseteam Apr 7, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ Depends: autopilot-qt5 (>= 1.4),
ubuntu-keyboard-emoji (>= ${source:Version}),
ubuntu-keyboard-english (>= ${source:Version}),
ubuntu-keyboard-english-dvorak (>= ${source:Version}),
ubuntu-keyboard-english-flick (>= ${source:Version}),
ubuntu-keyboard-persian (>= ${source:Version}),
ubuntu-keyboard-finnish (>= ${source:Version}),
ubuntu-keyboard-french (>= ${source:Version}),
Expand Down Expand Up @@ -254,6 +255,16 @@ Depends: ubuntu-keyboard (= ${binary:Version}),
Description: Ubuntu on-screen keyboard data files - English Dvorak
Data files for the Ubuntu virtual keyboard - English Dvorak

Package: ubuntu-keyboard-english-flick
Architecture: any
Depends: ubuntu-keyboard (= ${binary:Version}),
ubuntu-keyboard-english,
hunspell-en-us,
${misc:Depends},
${shlibs:Depends},
Description: Ubuntu on-screen keyboard data files - English Flick
Data files for the Ubuntu virtual keyboard - English Flick

Package: ubuntu-keyboard-esperanto
Architecture: any
Depends: ubuntu-keyboard (= ${binary:Version}),
Expand Down
1 change: 1 addition & 0 deletions debian/ubuntu-keyboard-english-flick.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
usr/share/maliit/plugins/com/ubuntu/lib/en@flick/
9 changes: 9 additions & 0 deletions plugins/en@flick/en@flick.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
CONFIG += ordered
TEMPLATE = subdirs
SUBDIRS = \
src \
qml

QMAKE_EXTRA_TARGETS += check
check.target = check
check.CONFIG = recursive
171 changes: 171 additions & 0 deletions plugins/en@flick/qml/Keyboard_en@flick.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
/*
* Copyright 2015 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 <http://www.gnu.org/licenses/>.
*/

import QtQuick 2.4
import keys 1.0

KeyPad {

anchors.fill: parent;
content: c1
Column {
id: c1
property int keyHeight: panel.keyHeight-panel.keyHeight*0.1
anchors.fill: parent;
spacing: 0

Row {
anchors.horizontalCenter: parent.horizontalCenter;
spacing: 0
ActionKey{
width:panel.keyWidth;
height:layout.height;
visHeight:height;
pressedColor: fullScreenItem.theme.actionKeyColor
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ă", "ą", "ȧ", "ā", "ǎ"]:["1", "q", "e", "r", ":"];
shiftedlabel:symojiKey.state == "marks" ? ["Ă", "Ą", "Ȧ", "Ā", "Ǎ"] :["1", "Q", "E", "R", ":"];
leaves:charlabel;
shiftedleaves:shiftedlabel;
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ŭ", "ų", "ṁ", "ū", "ǔ"] :["2", "t", "y", "u", "g"];
shiftedlabel: symojiKey.state == "marks" ? ["Ŭ", "Ų", "Ṁ", "Ū", "Ǔ"] :["2", "T", "Y", "U", "G"];
leaves:charlabel;
shiftedleaves:shiftedlabel;
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ŏ", "ǫ", "ȯ", "ō", "ǒ"] :["3", "i", "o", "m", ";"];
shiftedlabel: symojiKey.state == "marks" ? ["Ŏ", "Ǫ", "Ȯ", "Ō", "Ǒ"] :["3", "I", "O", "M", ";"]
leaves:charlabel;
shiftedleaves:shiftedlabel;
}
CaseSwitchKey { id: layout; labelright:true}
}

Row {
anchors.horizontalCenter: parent.horizontalCenter;
spacing: 0

FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ω", "", "ɛ", "д", "ɵ"] : ["#", "", "+", "@", "-"]
shiftedlabel: symojiKey.state == "marks" ? ["Ω", "", "Ɛ", "Д", "Ɵ"] : charlabel
labelleft:true
leaves: charlabel
shiftedleaves: shiftedlabel
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ĕ", "ę", "ė", "ē", "ě"] :["4", "a", "w", "d", "s"];
shiftedlabel: symojiKey.state == "marks" ? ["Ĕ", "Ę", "Ė", "Ē", "Ě"] :["4", "A", "W", "D", "S"];
leaves: charlabel;
shiftedleaves: shiftedlabel;
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ĭ", "į", "ḃ", "ī", "ǐ"] :["5", "b", "p", "f", "n"];
shiftedlabel: symojiKey.state == "marks" ? ["Ĭ", "Į", "Ḃ", "Ī", "Ǐ"] :["5", "B", "P", "F", "N"];
leaves: charlabel;
shiftedleaves: shiftedlabel;
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["đ", "ķ", "ẏ", "ȳ", "ď"]:["6", "h", "k", "l", "j"];
shiftedlabel: symojiKey.state == "marks" ? ["Đ", "Ķ", "Ẏ", "Ȳ", "Ď"] :["6", "H", "K", "L", "J"];
leaves: charlabel;
shiftedleaves: shiftedlabel;
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["þ", "ŋ", "æ", "", "œ"] : ["*", "€", "^", "", "$"]
shiftedlabel: symojiKey.state == "marks" ? ["Þ", "Ŋ", "Æ", "", "Œ"] : charlabel
labelright:true
leaves: charlabel
shiftedleaves: shiftedlabel
}
}

Row {
anchors.horizontalCenter: parent.horizontalCenter;
spacing: 0

CursorKey { leftSide:true; padding:0; }
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ğ", "å", "ġ", "ǵ", "ǧ"] : ["7", "]", "!", "[", "\\"]
shiftedlabel: symojiKey.state == "marks" ? ["Ğ", "Å", "Ġ", "Ǵ", "Ǧ"] : charlabel
leaves: charlabel
shiftedleaves: shiftedlabel
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ł", "ļ", "ṗ", "ĺ", "ľ"] :["8", "z", "x", "c", "v"]
shiftedlabel: symojiKey.state == "marks" ? ["Ł", "Ļ", "Ṗ", "Ĺ", "Ľ"] :["8", "Z", "X", "C", "V"];
leaves: charlabel
shiftedleaves: shiftedlabel;
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ű", "ů", "ż", "ź", "ž"] : ["9", ")", "?", "(", "/"]
shiftedlabel: symojiKey.state == "marks" ? ["Ű", "Ů", "Ż", "Ź", "Ž"] : charlabel
leaves: charlabel
shiftedleaves: shiftedlabel
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ŧ", "ţ", "ṫ", "", "ť"] : ["=", "₹", "£", "", "¥"]
leaves: charlabel
shiftedlabel: symojiKey.state == "marks" ? ["Ŧ", "Ţ", "Ṫ", "", "Ť"] : charlabel
shiftedleaves: shiftedlabel
}
}

Row {
anchors.horizontalCenter: parent.horizontalCenter;
spacing: 0

SymojiKey { id: symojiKey;}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ø", "ŗ", "ṙ", "ŕ", "ř"] : [",", ">", "&amp;", "&lt;", "_"]
shiftedlabel: symojiKey.state == "marks" ? ["Ø", "Ŗ", "Ṙ", "Ŕ", "Ř"] : charlabel
leaves: symojiKey.state == "marks" ? charlabel : [",", ">", "&", "<", "_"]
shiftedleaves: symojiKey.state == "marks" ? shiftedlabel : leaves
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ő", "ç", "ċ", "ć", "č"] : ["0", "'", "`", "\"", "%"]
shiftedlabel: symojiKey.state == "marks" ? ["Ő", "Ç", "Ċ", "Ć", "Č"] : charlabel
leaves: charlabel
shiftedleaves: shiftedlabel
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ə", "ş", "ṡ", "ś", "š"] : [".", "}", "|", "{", "~"]
shiftedlabel: symojiKey.state == "marks" ? ["Ə", "Ş", "Ṡ", "Ś", "Š"] : charlabel
leaves: charlabel
shiftedleaves: shiftedlabel
}
BackspaceKey { rightSide: true; width: panel.keyWidth;visHeight:layout.height;}
}

} // column
Row{
anchors.horizontalCenter: parent.horizontalCenter;
anchors.left:parent.left
anchors.bottom:parent.bottom
spacing: 0

LayoutBar {
id: layoutBar;
width: parent.width;
height:layout.height-layout.height*0.5;
visHeight:height;
fontSize:fontSize;
}

}
}
172 changes: 172 additions & 0 deletions plugins/en@flick/qml/Keyboard_en@flick_email.qml
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
/*
* Copyright 2015 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 <http://www.gnu.org/licenses/>.
*/

import QtQuick 2.4
import keys 1.0

KeyPad {

anchors.fill: parent;
content: c1
Column {
id: c1
property int keyHeight: panel.keyHeight-panel.keyHeight*0.1
anchors.fill: parent;
spacing: 0

Row {
anchors.horizontalCenter: parent.horizontalCenter;
spacing: 0
ActionKey{
width:panel.keyWidth;
height:layout.height;
visHeight:height;
pressedColor: fullScreenItem.theme.actionKeyColor
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ă", "ą", "ȧ", "ā", "ǎ"]:["1", "q", "e", "r", ":"];
shiftedlabel:symojiKey.state == "marks" ? ["Ă", "Ą", "Ȧ", "Ā", "Ǎ"] :["1", "Q", "E", "R", ":"];
leaves:charlabel;
shiftedleaves:shiftedlabel;
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ŭ", "ų", "ṁ", "ū", "ǔ"] :["2", "t", "y", "u", "g"];
shiftedlabel: symojiKey.state == "marks" ? ["Ŭ", "Ų", "Ṁ", "Ū", "Ǔ"] :["2", "T", "Y", "U", "G"];
leaves:charlabel;
shiftedleaves:shiftedlabel;
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ŏ", "ǫ", "ȯ", "ō", "ǒ"] :["3", "i", "o", "m", ";"];
shiftedlabel: symojiKey.state == "marks" ? ["Ŏ", "Ǫ", "Ȯ", "Ō", "Ǒ"] :["3", "I", "O", "M", ";"]
leaves:charlabel;
shiftedleaves:shiftedlabel;
}
CaseSwitchKey { id: layout; labelright:true}
}

Row {
anchors.horizontalCenter: parent.horizontalCenter;
spacing: 0

FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ω", "", "ɛ", "д", "ɵ"] : ["#", "", "+", "@", "-"]
shiftedlabel: symojiKey.state == "marks" ? ["Ω", "", "Ɛ", "Д", "Ɵ"] : charlabel
labelleft:true
leaves: charlabel
shiftedleaves: shiftedlabel
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ĕ", "ę", "ė", "ē", "ě"] :["4", "a", "w", "d", "s"];
shiftedlabel: symojiKey.state == "marks" ? ["Ĕ", "Ę", "Ė", "Ē", "Ě"] :["4", "A", "W", "D", "S"];
leaves: charlabel;
shiftedleaves: shiftedlabel;
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ĭ", "į", "ḃ", "ī", "ǐ"] :["5", "b", "p", "f", "n"];
shiftedlabel: symojiKey.state == "marks" ? ["Ĭ", "Į", "Ḃ", "Ī", "Ǐ"] :["5", "B", "P", "F", "N"];
leaves: charlabel;
shiftedleaves: shiftedlabel;
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["đ", "ķ", "ẏ", "ȳ", "ď"]:["6", "h", "k", "l", "j"];
shiftedlabel: symojiKey.state == "marks" ? ["Đ", "Ķ", "Ẏ", "Ȳ", "Ď"] :["6", "H", "K", "L", "J"];
leaves: charlabel;
shiftedleaves: shiftedlabel;
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["þ", "ŋ", "æ", "", "œ"] : ["*", "€", "^", "", "$"]
shiftedlabel: symojiKey.state == "marks" ? ["Þ", "Ŋ", "Æ", "", "Œ"] : charlabel
labelright:true
leaves: charlabel
shiftedleaves: shiftedlabel
}
}

Row {
anchors.horizontalCenter: parent.horizontalCenter;
spacing: 0

CursorKey { leftSide:true; padding:0; }
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ğ", "å", "ġ", "ǵ", "ǧ"] : ["7", "]", "!", "[", "\\"]
shiftedlabel: symojiKey.state == "marks" ? ["Ğ", "Å", "Ġ", "Ǵ", "Ǧ"] : charlabel
leaves: charlabel
shiftedleaves: shiftedlabel
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ł", "ļ", "ṗ", "ĺ", "ľ"] :["8", "z", "x", "c", "v"]
shiftedlabel: symojiKey.state == "marks" ? ["Ł", "Ļ", "Ṗ", "Ĺ", "Ľ"] :["8", "Z", "X", "C", "V"];
leaves: charlabel
shiftedleaves: shiftedlabel;
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ű", "ů", "ż", "ź", "ž"] : ["9", ")", "?", "(", "/"]
shiftedlabel: symojiKey.state == "marks" ? ["Ű", "Ů", "Ż", "Ź", "Ž"] : charlabel
leaves: charlabel
shiftedleaves: shiftedlabel
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ŧ", "ţ", "ṫ", "", "ť"] : ["=", "₹", "£", "", "¥"]
leaves: charlabel
shiftedlabel: symojiKey.state == "marks" ? ["Ŧ", "Ţ", "Ṫ", "", "Ť"] : charlabel
shiftedleaves: shiftedlabel
}
}

Row {
anchors.horizontalCenter: parent.horizontalCenter;
spacing: 0

SymojiKey { id: symojiKey;}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ø", "ŗ", "ṙ", "ŕ", "ř"] : [",", ">", "&amp;", "&lt;", "_"]
shiftedlabel: symojiKey.state == "marks" ? ["Ø", "Ŗ", "Ṙ", "Ŕ", "Ř"] : charlabel
leaves: symojiKey.state == "marks" ? charlabel : [",", ">", "&", "<", "_"]
shiftedleaves: symojiKey.state == "marks" ? shiftedlabel : leaves
}
FlickCharKey {
charlabel: symojiKey.state == "marks" ? ["ő", "ç", "ċ", "ć", "č"] : ["0", "'", "`", "\"", "%"]
shiftedlabel: symojiKey.state == "marks" ? ["Ő", "Ç", "Ċ", "Ć", "Č"] : charlabel
leaves: charlabel
shiftedleaves: shiftedlabel
}
StringKey {
charlabel: symojiKey.state == "marks" ? ["ə", "ş", "ṡ", "ś", "š"] : [".", "<font size\"4\">.io</font>", "<font size=\"4\">.com</font>", "<font size=\"4\">.org</font>","<font size=\"4\">.net</font>"]
shiftedlabel: symojiKey.state == "marks" ? ["Ə", "Ş", "Ṡ", "Ś", "Š"] : [".", "}", "#", "{", "~"];
leaves: symojiKey.state == "marks" ? charlabel : [".", "<font size=\"4\">.io", "<font size=\"4\">.com</font>", "<font size=\"4\">.org</font>","<font size=\"4\">.net</font>"]
shiftedleaves: symojiKey.state == "marks" ? shiftedlabel : [".", "}", "#", "{", "~"];
unstyledLeaves: symojiKey.state == "marks" ? shiftedlabel : (panel.activeKeypadState === "NORMAL") ? [".", ".io", ".com", ".org",".net"]: shiftedlabel;
}
BackspaceKey { rightSide: true; width: panel.keyWidth;visHeight:layout.height;}
}

} // column
Row{
anchors.horizontalCenter: parent.horizontalCenter;
anchors.left:parent.left
anchors.bottom:parent.bottom
spacing: 0

LayoutBar {
id: layoutBar;
width: parent.width;
height:layout.height-layout.height*0.5;
visHeight:height;
fontSize:fontSize;
}

}
}
Loading