LanguagePack
LanguagePack copied to clipboard
[Feature Request] New Keyboard layout, Eastman THERM, optomized for one finger swiping
Hi. I've been using the Flow soft keyboard for years, it's a a keyboard optimized for single finger swiping in English with the most common letters & letter groupings located as close to the centre or adjacent to common letter groupings as possible, unfortunately the developer appears inactive and it now exhibits several little bugs on Android Pie & Android 10 making it less easy to use. As ASK now supports swipe it would be ideal to incorporate this innovative layout into ASK.
The original app is here https://play.google.com/store/apps/details?id=com.enchantedcode.flow&hl=en
It has an open source licence so this layout (which I've called "Eastman THERM" after the developer, followed by main key layout ie "THERM" as someone here might produce a different layout optimised for a different language). Licence here https://sourceforge.net/projects/flowkeyboard/ and original code etc
Unfortunately I'm no coder & haven't created an apk or even run it as a virtual device on Android Studio yet, so hope someone here could help.
I've made an attempt to combine the basic layout of the Flow keyboard while also keeping features & behaviors of ASK eg same symbols will appear when long pressing for most popups. (there are a couple of duplicate symbols for this reason). I suspect one drawback is likely to be the the generic bottom row used by ASK which doesn't suit this layout, likewise with some others eg EN Keyboard, Halmak etc, but at least we might have a functional layout.
So I'll post the code I've "hacked" here, no doubt there are likely some errors not to mention completely wrong coding ie I've used the @interger coding from the utility keyboard of the main module eg android:codes="@integer/key_code_voice_input but I don't know if it'll work within the language pack. Also I'm not sure what effect using the code "isfunctional" on keys within the normal key area will have. Also you'll see I've "commented out" some code in favour of another line,
Basic Eastman THERM layout `
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ask="http://schemas.android.com/apk/res-auto" android:keyWidth="10%p" android:keyHeight="@integer/key_normal_height"> <Row> <Key android:horizontalGap="15%p" android:codes="\u003F" android:popupCharacters="?!\u0026\u00a1¿⸮‽" ask:hintLabel="\u0021" android:keyEdgeFlags="left"/> <Key android:codes="x" android:popupCharacters="*·×\u0040" ask:hintLabel="\0040"/> <Key android:codes="w" android:popupCharacters="([{⸢«ŵ<" ask:hintLabel="("/> <Key android:codes="v" android:popupCharacters=")]}»⸣>" ask:hintLabel=")>"/> <Key android:codes="y" android:popupCharacters="%ýÿ" ask:hintLabel="%"/> <Key android:codes="b" android:popupCharacters="U+03B2" ask:hintLabel="β"/> <Key android:keyWidth="10%p" android:codes="-5" android:isRepeatable="true" android:keyEdgeFlags="right" android:horizontalGap="15%p"/> </Row>
<Row>
<Key android:horizontalGap="15%p" android:codes="," android:popupCharacters="" ask:hintLabel="" android:keyEdgeFlags="left"/>
<Key android:codes="t" android:popupCharacters="\u003a ťṭṯ™" ask:hintLabel="\u003a"/>
<Key android:codes="h" android:popupCharacters="1¹₁_~ĥḥḫẖ" ask:hintLabel="1_ ~"/>
<Key android:codes="e" android:popupCharacters="2²₂èéêëęē€" ask:hintLabel="2"/>
<Key android:codes="r" android:popupCharacters="3³₃řŕ®℞" ask:hintLabel="3"/>
<Key android:codes="m" android:popupCharacters="/÷\\|µ" ask:hintLabel="/"/>
<Key ask:isFunctional="true" android:codes="32" android:popupCharacters="" ask:keyLabel="⎵"
android:keyEdgeFlags="right" android:horizontalGap="15%p"/>
</Row>
<Row>
<Key android:horizontalGap="15%p" android:codes="." android:popupCharacters="…·•" ask:hintLabel="…•" android:keyEdgeFlags="left"/>
<Key android:codes="c" android:popupCharacters="\u003b çćĉč©" ask:hintLabel="−"/>
<Key android:codes="a" android:popupCharacters="4⁴₄@àáâãāäåæąα" ask:hintLabel="4@" />
<Key android:codes="i" android:popupCharacters="5ìíîïłīι*" ask:hintLabel="5"/>
<Key android:codes="o" android:popupCharacters="6òóôõöøőœō" ask:hintLabel="6"/>
<Key android:codes="l" android:popupCharacters="+ľĺł±" ask:hintLabel="+"/>
<Key android:codes="p" android:popupCharacters="U+03C0" ask:hintLabel="π"
android:keyEdgeFlags="right" android:horizontalGap="15%p"/>
</Row>
<Row>
<Key android:horizontalGap="15%p" android:codes="-2" android:keyLabel="123" android:keyEdgeFlags="left"/>
<Key android:codes="k" android:popupCharacters="$€£¥¢₽₹元₿" ask:hintLabel="$"/>
<Key android:codes="s" android:popupCharacters="7$§ßśŝšṣ" ask:hintLabel="7"/>
<Key android:codes="n" android:popupCharacters="8ńňñ" ask:hintLabel="8"/>
<Key android:codes="u" android:popupCharacters="9ùúûüŭűūµ" ask:hintLabel="9"/>
<Key android:codes="d" android:popupCharacters="-—#°đďḏ" ask:hintLabel="-"/>
<Key android:codes="j" android:popupCharacters="\u003Dĵ≠" ask:hintLabel="="/>
<Key ask:isFunctional="true" android:codes="\u0027" android:popupCharacters="ʾʿʻ\u0022"
android:keyEdgeFlags="right" android:horizontalGap="15%p"/>
</Row>
<Row>
<Key android:horizontalGap="15%p" android:codes="-1" android:keyWidth="10%p"
android:isModifier="true" android:isSticky="true" android:keyEdgeFlags="left"/>
<Key android:codes="z" android:popupCharacters="=żžź" ask:hintLabel="="/>
<Key android:codes="'" android:popupCharacters="'u0022" ask:hintLabel="u0022"/>
<Key android:codes="g" android:popupCharacters="0`°ĝ" ask:hintLabel="0`°"/>
<Key android:codes="f" android:popupCharacters="#" ask:hintLabel="#"/>
<Key android:codes="q" android:popupCharacters="*^‡†" ask:hintLabel="*"/>
<Key android:keyWidth="10%p" android:codes="-4" android:isRepeatable="true"
android:keyEdgeFlags="right" android:horizontalGap="15%p"/>
</Row>
`
My extended version with extra keys on sides for better usability as most phones have wide enough screens and keys should be small to aid swiping speed rather than spread across the whole screen. `
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ask="http://schemas.android.com/apk/res-auto" android:keyWidth="10%p" android:keyHeight="@integer/key_normal_height"> <Row> <Key android:codes="@integer/key_code_clipboard_select_all" android:keyEdgeFlags="left"/> <Key android:codes="\u003F" android:popupCharacters="?!\u0026\u00a1¿⸮‽" ask:hintLabel="\u0021"/> <Key android:codes="x" android:popupCharacters="*·×\u0040" ask:hintLabel="\0040"/> <Key android:codes="w" android:popupCharacters="([{⸢«ŵ<" ask:hintLabel="("/> <Key android:codes="v" android:popupCharacters=")]}»⸣>" ask:hintLabel=")>"/> <Key android:codes="y" android:popupCharacters="%ýÿ" ask:hintLabel="%"/> <Key android:codes="b" android:popupCharacters="U+03B2" ask:hintLabel="β"/> <Key android:codes="@integer/key_code_arrow_left" android:isRepeatable="true"/> <Key android:codes="@integer/key_code_arrow_right" android:isRepeatable="true" android:keyEdgeFlags="right"/> </Row>
<Row>
<Key android:codes="@integer/key_code_clipboard_select"/>
<Key android:codes="," android:popupCharacters="" ask:hintLabel=""/>
<Key ask:isFunctional="true" android:codes="," android:popupCharacters="\u002C;" ask:hintLabel=", ; -" android:keyEdgeFlags="left"/>
<Key android:codes="t" android:popupCharacters="\u003a ťṭṯ™" ask:hintLabel="\u003a"/>
<Key android:codes="h" android:popupCharacters="1¹₁_~ĥḥḫẖ" ask:hintLabel="1_ ~"/>
<Key android:codes="e" android:popupCharacters="2²₂èéêëęē€" ask:hintLabel="2"/>
<Key android:codes="r" android:popupCharacters="3³₃řŕ®℞" ask:hintLabel="3"/>
<Key android:codes="m" android:popupCharacters="/÷\\|µ" ask:hintLabel="/"/>
<Key android:keyWidth="20%p" ask:isFunctional="true" android:codes="32"
android:popupCharacters="" ask:keyLabel="⎵" android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="@integer/key_code_clipboard_cut" android:keyEdgeFlags="left"/>
<Key android:codes="." android:popupCharacters="…·•" ask:hintLabel="…•"/>
<Key ask:isFunctional="true" android:codes="." android:popupCharacters="\?!\u0026\u00a1¿⸮‽" ask:hintLabel="\? !"/>
<Key android:codes="c" android:popupCharacters="\u003b çćĉč©" ask:hintLabel="−"/>
<Key android:codes="a" android:popupCharacters="4⁴₄@àáâãāäåæąα" ask:hintLabel="4@" />
<Key android:codes="i" android:popupCharacters="5ìíîïłīι*" ask:hintLabel="5"/>
<Key android:codes="o" android:popupCharacters="6òóôõöøőœō" ask:hintLabel="6"/>
<Key android:codes="l" android:popupCharacters="+ľĺł±" ask:hintLabel="+"/>
<Key android:codes="p" android:popupCharacters="U+03C0" ask:hintLabel="π"/>
android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="@integer/key_code_clipboard_copy" android:keyEdgeFlags="left"/>
<Key android:codes="-2" android:keyLabel="123"/>
<Key android:codes="k" android:popupCharacters="$€£¥¢₽₹元₿" ask:hintLabel="$"/>
<Key android:codes="s" android:popupCharacters="7$§ßśŝšṣ" ask:hintLabel="7"/>
<Key android:codes="n" android:popupCharacters="8ńňñ" ask:hintLabel="8"/>
<Key android:codes="u" android:popupCharacters="9ùúûüŭűūµ" ask:hintLabel="9"/>
<Key android:codes="d" android:popupCharacters="-—#°đďḏ" ask:hintLabel="-"/>
<Key android:codes="j" android:popupCharacters="\u003Dĵ≠" ask:hintLabel="="/>
<Key android:codes="@integer/key_code_quick_text" ask:longPressCode="@integer/key_code_quick_text_popup"
android:keyEdgeFlags="right"/>
</Row>
<Row>
<Key android:codes="@integer/key_code_clipboard_paste"
ask:longPressCode="@integer/key_code_clipboard_paste_popup" android:keyEdgeFlags="left"/>
<Key android:codes="-1" android:isModifier="true" android:isSticky="true" android:keyEdgeFlags="left"/>
<Key android:codes="z" android:popupCharacters="=żžź" ask:hintLabel=""/>
<Key ask:isFunctional="true" android:codes="\u0027" android:popupCharacters="ʾʿʻ\u0022"/>
<Key android:codes="g" android:popupCharacters="0`°ĝ" ask:hintLabel="0`°"/>
<Key android:codes="f" android:popupCharacters="#" ask:hintLabel="#"/>
<Key android:codes="q" android:popupCharacters="*^‡†" ask:hintLabel="*"/>
<Key android:codes="-4" android:isRepeatable="true"
<Key android:keyWidth="10%p" android:codes="@integer/key_code_voice_input"
android:keyEdgeFlags="right"/>
</Row>
`
I've also added the above keyboards to the english_pack_strings, english_pack_strings_dont_translate, english_keyboards files but I won't post for now as this is long enough already & no doubt there will be others that need updating.
All feedback,suggestions & critique welcome