FORUMS
Remove All Ads from XDA
Honor 7x
Win an Honor 7X!

[MOD][XPOSED][4.4+] Exi for Swiftkey [1.3.1][06.12.2017]

65 posts
Thanks Meter: 199
 
By Roughy, Member on 2nd August 2017, 05:55 PM
Post Reply Email Thread
Announcement from Roughy: Exi for Swiftkey[1.3.1] - shortcut ellipse removed, emoji vibrate, translations
Exi for Swiftkey

Exi for Swiftkey is an Xposed Framework module that adds a number of features to the Swiftkey Keyboard.

This post contains basic info about the module and its features.
Detailed instructions on how to use it can be found in the next post down.

Since the Xposed Installer does not automatically update the module for you, I recommend disabling automatic updates for Swiftkey, and updating it and this module at the same time.

Compatibility ( Updated 30/11/17 ):
Swiftkey - 6.7.3.28 Latest: YES
Swiftkey Beta - 6.7.4.24 Latest: YES (More suggestions broke, otherwise fine)

Supported Android versions:
4.4 Kitkat - 7.1 Nougat (Officlal Xposed Framework only)

Features:
  • Swipe selection [Gif]
    • Cursor movement
    • Selection (Gesture or swipe-from-key)
    • Multiple modes (Anywhere, spacebar, hold-and-swipe)
  • More Suggestions [Gif]
    • Suggestions bar can be scrolled to view all suggestions
  • Custom Shortcuts [Gif]
    • Multiple shortcuts for same word
    • Trigger on verbatim input, suggestions, or flow
    • Dictionary importable from file (tab or space delimited)
  • Hotkeys ( Ctrl + key ) [Gif]
    • Define any key as CTRL
    • Supports Select all / Cut / Copy / Paste / Go to end
  • Quick Actions
    • Display circular quick-menu by swiping up from spacebar [Gif]
    • Trigger corresponding hotkey by swiping from spacebar to key [Gif]
  • Popup-keys [Gif]
    • Customize popup alt-characters
  • Emoji [Gif]
    • Panels are fully customizable (Icon, position, emoji, row count)
    • Emoji importable from file ( line-break delimited )
    • Configurable font size
  • Other
    • Remove empty space next to suggestions [Image]
    • Prevent period key from triggering on tap
    • Cursor stays where you place it, rather than moving to end of word
    • Disable auto-space after punctuation
A more detailed explanation of the features can be found in the next post.

About:

Obfuscation:
The ClassHunter library was developed alongside this module to counteract Proguard obfuscation:
ClassHunter on Github

Stable and beta branches:
In addition to the stable branch (com.touchtype.swiftkey), Swiftkey also offers a beta branch of their keyboard. While both are supported, any module-breaking changes will occur on the beta branch first, before making their way to stable later on. This means that you should be able to keep auto-update enabled if you are using the stable branch of swiftkey, assuming I am around and motivated enough to fix any issues that pop up in the beta branch.

Version History:
  • 1.3.1 [ 06.12.2017 ] - shortcut ellipse removed, emoji vibrate, translations ( Stable: 6.7.2.22, Beta: 6.7.3.25 ) [Release Post]
  • 1.3.0 [ 30.11.2017 ] - RTL support, custom sounds, number-row swipe, popups case, nsfw gifs( Stable: 6.7.2.22, Beta: 6.7.3.25 ) [Release Post]
  • 1.2.1 [ 02.11.2017 ] - translations, remove existing popups, select old/new emoji panels, bug fixes( Stable: 6.7.0.18, Beta: 6.7.1.20 ) [Release Post]
  • 1.2.0 [ 28.10.2017 ] -Nougat, diverse emoji, restore defaults, bug fixes( Stable: 6.7.0.18, Beta: 6.7.1.15 ) [Release Post]
  • 1.1.1 [ 02.10.2017 ] -Flow shortcuts crash fix( Stable: 6.6.6.26, Beta: 6.6.9.19 ) [Release Post]
  • 1.1.0 [ 01.10.2017 ] - QuickMenu config, bug fixes( Stable: 6.6.6.26, Beta: 6.6.9.19 ) [Release Post]
  • 1.0.3 [ 10.09.2017 ] - Compatibility fixes ( Stable: 6.6.6.21, Beta: 6.6.7.28 ) [Release Post]
  • 1.0.2 [ 24.08.2017 ] - bug fixes, vertical swipe, punctuation auto-space ( Stable: 6.6.5.31, Beta: 6.6.6.17 ) [Release Post]
  • 1.0.1 [ 08.08.2017 ] - Bug fixes, ui tweaks ( Stable: 6.6.4.19, Beta: 6.6.5.24 ) [Release Post]
  • 1.0.0 [ 02.08.2017 ] - Initial Release ( Stable: 6.6.3.21, Beta: 6.6.4.15 )
Changes in [1.3.1] (Stable: 6.7.2.22, Beta: 6.7.3.25) :[Release Post]
  • Changed
    - Device will now vibrate when you input an emoji
    - Shortcuts will no longer be ellipsized
    - Translations updated, Russian/Polish now complete
    - More file types allowed when selecting custom sounds

Full List of changes


Download:

Exi for Swiftkey on Xposed module repository

Bug reports:
This module tags its logcat messages with "Exi/"
If you run into any issues, please include any relevant xposed or logcat logs.
DO NOT bother the Swiftkey developers with any issues you encounter a result of using this module

Attributions:

Libraries used:Thanks to:
  • Rovo89 for the Xposed Framework
  • Anyone I've forgotten to mention

Support the Project:
As it stands Exi for Swiftkey is entirely free, open-source, and completely without limitations.
Consider buying the developer a brownie if you found this module useful:

Bitcoin Address
Bitcoin: 1Mx17r3DuwUzzp87zhZwfunsLQ2jpmTmfJ

PAYPAL

XDA:DevDB Information
Exi for Swiftkey, Xposed for all devices (see above for details)

Contributors
Roughy
Source Code: https://github.com/Nordskog/SwiftKeyExi

Xposed Package Name: com.mayulive.swiftkeyexi

Version Information
Status: Stable
Current Stable Version: 1.3.1
Stable Release Date: 2017-12-06

Created 2017-08-02
Last Updated 2017-12-11
Attached Thumbnails
Click image for larger version

Name:	JXoyS4Y.png
Views:	5452
Size:	85.6 KB
ID:	4230623   Click image for larger version

Name:	MOq3ruu.png
Views:	5418
Size:	103.9 KB
ID:	4230624   Click image for larger version

Name:	aIuGd0H.png
Views:	5400
Size:	81.9 KB
ID:	4230625   Click image for larger version

Name:	Rn2r9eT.png
Views:	5158
Size:	33.7 KB
ID:	4230626  
The Following 64 Users Say Thank You to Roughy For This Useful Post: [ View ] Gift Roughy Ad-Free
 
 
2nd August 2017, 05:56 PM |#2  
OP Member
Thanks Meter: 199
 
Donate to Me
More
Detailed Instructions
Below are detailed explanations of all the features and how to configure them.

NOTE: These instructions are severely out of date. Maybe check the release posts of the updates if you're after something specific


Shift / Delete / Modifier keys
The shift, delete, and modifier keys will be referred to frequently in these explanations.
The modifier is like a ctrl key, which by default is mapped to the symbols key (123 - switch to the symbols layout).
This mapping is configurable, and you can add and remove multiple keys as you see fit.
Likewise, what this module considers to be the shift/delete keys is up to you.
These mappings can be configured in settings under Keys.

Key Defintions
Keys can be defined by content or function, such as spacebar or enter key.
Keys which are defined by their content are identified by their display string.
That means that a key that the content of a key that displays as "A" is also "A".
This also applies to the more exotic Asian layouts.
There are some exceptions, such as the Japanese long-vowel ( ー ) key using a normal hyphen ( - ) instead.

Swipe
Settings - Specify swipe threshold and speed:

Threshold - This slider specifies how far you have to swipe before swipe-mode is triggered. The |--| bar above the slider displays the actual physical distance on screen.
Speed - This slider specifies how fast the cursor moves. The number of characters above the bar show how far the cursor will move when swiped that distance.

Swipe mode - how and where to swipe:


Swipe Anywhere - Swipe mode can be triggered by swiping anywhere, except for on the spacebar or enter keys. Swiftkey's flow and swipe gestures interfere with swipe selection in this mode, and are therefore disabled.
Swipe on Spacebar - Swipe will only trigger on the spacebar. This means you can use flow and swipe-gestures are normal. You can still switch between languages as usual, but have to wait the popup to appear before swiping to select it.
Hold any and Swipe - Swiping requires two fingers. Hold down one finger and use the second to swipe.
Hold Shift and Swipe - Swiping requires two fingers. Hold down one finger on the shift key and use the second to swipe.

Selection Mode - how to swipe-select text .

Two-finger Gesture - Select text by using two-finger pinch and zoom gestures.
Swipe from shift/delete - Swipe from the shift key to select to the right, from the delete key to select to the left. What keys are treated as shift/delete can be configured under Keys.

Spacebar Swipe-up mode- Behavior when swiping up from space .

Quick-menu - Swiping up from the spacebar will display a circular quick-action menu with select all / copy / paste / go-to-end. This menu is currently not customizable.
Hotkeys - You can swipe from the spacebar to any of the keys defined in in the Hotkeys tab, and trigger their corresponding action.

Emoji

Overview:
The emoji panel tab is split into two sections:

Top: A list of panels you can choose emoji from. This is also where imported emoji will first appear.
Bottom: The panels that will appear inside Swiftkey.

The existing templates in the top pane cannot be modified or deleted, as we may make additions to them as Android evolves.
You can create a new panel here to manually input emoji, or create a new panel by importing from a line-break delimited file.

In the bottom pane you can add or remove panels as you see fit, and add emoji (individually or by selecting add-all from the menu) from the templates in the top pane.
The one exception is the Recent Emoji panel (Denoted by a clock icon), which you may only change the position or icon of.

Setting icon and position:


Any of the panels can be renamed or moved around by long clicking on them.
You may also hit the pick button to choose an icon from any of the existing emoji panels.

Setting row count:
By selecting Column Size from the menu, you can specify the column width for each emoji panel.

Dictionary
Overview:

The dictionary tab lets you specify shortcut - word mappings.
In the above screenshot the shortcut is "xx", and typing it in the keyboard results in all the nested words showing up as suggestions.
This is particularly powerful when combined with the More Suggestions feature, allowing you to scroll through all of them.

Swiftkey's existing shortcut solution will only trigger if you spell out the trigger verbatim. It also doesn't allow certain characters, such as emoji, in the mapped word.
Our solution can also be configured to be inserted if the primary suggestion matches the shortcut, and even inserted during flow.
These options can be configured under settings.

Secondary suggestions:

By default shortcuts will be inserted starting from the primary suggestion.
When defining the shortcut, or changing it after creation by clicking the shortcut itself, you can configure the mapped words to be inserted as secondary suggestions instead.
This means the primary, center suggestion remains, and your shortcuts will be inserted starting with the second suggestion (right side in most languages).
The behavior is the same as when Swiftkey provides emoji predictions.

Hotkeys
Overview:

Hotkeys are basically just Ctrl - a/x/c/v combos we are all familiar with on full-sized keyboards.
Our equivalent for Ctrl is the Modifier key, which can be set to one or more keys under settings - Keys.
The default Modifier Key is the Symbols layout key ( 123 ).
Available actions are Select all / Copy / cut / paste / go to end.

Configuring a key:

With the exception of keys defined by their function (spacebar, enter key etc), most keys are defined by the character they display.
In general means you just punch in the character the key is displaying and everything should work out. This applies to the more exotic Asian languages as well.
There are occasionally some discrepancies though. For instance, the long-vowel symbol "ー" in the Japanese layout actually displays a standard hyphen "-".

Popups
Overview:

The alternate characters that popup when long-pressing a key can be configured to your liking.
Because different layouts shift the position of these keys around, their positions are defined as either center, or any of the remaining positions starting from left to right.

When you first add a popup, you will be asked to set a parent key. This is the key that popups will appear under.

Configuring keys:

Once the parent key has been added you can click any empty space to add a key there, or the PLUS button to add more slots.
Slots already occupied by characters are greyed out. If Swiftkey does not provide any characters for the empty slots, they will simply be ignored.
Any popup characters provided by Swiftkey will be shifted to the right to make space for our insertions.

This is the result of the above configuration. There is an existing symbol ( + ) which is shifted from it's center slot to the first position, and then shifted again by the "1" we insert there.
Our "5" wants to be in slot 5, so it ends up after it.

Settings
Overview:

The settings panel provides a few additional tweaks.

Emoji Panel
Replace Emoji Panel: If disabled, Swiftkey's original emoji panel will be used instead
Emoji Size: The emoji font size can be configured to some degree. The default value is 12.

Flow & Suggestions
More Suggestions: If enabled, the suggestions bar will be made scrollable, and display many more suggestions.
Suggestion shortcuts: If enabled, shortcuts will trigger on the primary suggestion, instead of only on verbatim input
Flow shortcuts: If enabled, shortcuts will also be inserted when you flow. Suggestion shortcuts must be enabled for this to work.
No auto-correct after swiping: When moving the cursor, Swiftkey sometimes insists on inserting the primary suggestion when you hit space, instead of inserting a space. If enabled, a space will always be inserted.
Maximize suggestions: Swiftkey recently added gaps to both sides of the suggestions bar to make their menu button easier to hit. If enabled, the suggestions bar will fill the screen like it used to.

Misc
Disable period tap: Apparently many people hit the period button by mistake. If enabled, a quick tap will no longer trigger it. It must instead be clicked proper.
Quick-Menu color: Set the color used to highlight the selected item in the quick-menu.

Keys:

Here you can choose which keys will be treated as shift, delete, and modifiers keys by this module.
See the beginning of this post for a more detailed explanation.


Unlike Hotkeys, here you can define keys not only be their content, but also their function.
By default it makes sense for the shift and delete keys to be mapped to their respective keys,
but some languages do not have a shift key, and in others the delete key is an a completely unreasonable location.
The content field is only available if Letter or Symbol key is picked from the list.
The Following 10 Users Say Thank You to Roughy For This Useful Post: [ View ] Gift Roughy Ad-Free
2nd August 2017, 06:48 PM |#3  
Senior Member
Thanks Meter: 59
 
More
I was looking forward to this. Looks great! Awesome UI! Might I suggest a video tutorial explaining all the options?
2nd August 2017, 06:50 PM |#4  
OP Member
Thanks Meter: 199
 
Donate to Me
More
Quote:
Originally Posted by oroboros74

I was looking forward to this. Looks great! Awesome UI! Might I suggest a video tutorial explaining all the options?

The second post in this thread is reserved for this purpose, I just need a quick breather. Soon!
The Following 2 Users Say Thank You to Roughy For This Useful Post: [ View ] Gift Roughy Ad-Free
2nd August 2017, 07:59 PM |#5  
Senior Member
Thanks Meter: 76
 
More
I definitely will try it once xposed for Nougat comes. Hopefully soon (fingers crossed)
2nd August 2017, 11:17 PM |#6  
godlesplay's Avatar
Senior Member
Thanks Meter: 237
 
More
@Roughy very nice module, could you add functionality of this module? (because it is abandoned) thanks! http://repo.xposed.info/module/com.s...screenkeyboard
3rd August 2017, 12:20 AM |#7  
Ibuprophen's Avatar
Senior Member
Flag Upstate New York
Thanks Meter: 2,434
 
Donate to Me
More
This looks very interesting.... Hmmm...

I think I'll give it a try now

______________
PLEASE NOTE: I welcome any member to help with further valuable information/clarification for any of my posts.

×MY DEVELOPMENTS×
[APP][TOOL][4.2+]The SELinux Toggler
[ZIP][TOOL][AIO]BusyBox Stericson Binary Installer v1.26.2 {BB/TB Auto-Symlink}
×IN DEVELOPMENT×
[APP][TOOL][4.2+][OFFICIAL]The SELinux Switch
Will Supersede "The SELinux Toggler"
×IDEAS FOR DEVELOPMENT×
[APP][UNOFFICIAL][4.2+]XDA Forum {Classic}
[APP][UNOFFICIAL][4.2+]XDA Reader {Classic}
3rd August 2017, 01:34 AM |#8  
Nekrozys's Avatar
Junior Member
Flag Bruxelles
Thanks Meter: 1
 
More
YES !
I've been wanting this for years. I used to use SwipeSelection on a jailbroken iPhone 4 before I moved to Android and this was one of my biggest let down when doing so.
So happy to find so many improvement coming to the Swiftkey keyboard.
The Following User Says Thank You to Nekrozys For This Useful Post: [ View ] Gift Nekrozys Ad-Free
3rd August 2017, 03:13 AM |#9  
Senior Member
Thanks Meter: 56
 
More
Amazing App..
3rd August 2017, 04:08 AM |#10  
Senior Member
Thanks Meter: 9
 
More
amazing is it possible in future version to implement Swipe right to trigger space like fleksy keyboard thanks
The Following 2 Users Say Thank You to ale82to For This Useful Post: [ View ] Gift ale82to Ad-Free
3rd August 2017, 05:08 AM |#11  
leonardoroza's Avatar
Senior Member
Thanks Meter: 92
 
More
Great app, congrats!

Sent from my Moto X Play using XDA Labs
Post Reply Subscribe to Thread

Guest Quick Reply (no urls or BBcode)
Message:
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes