I'm starting this thread because I wanted to share my ideas about improving the OSK in UT.
Back in the Canonical days, I suggested to use the space key for controlling the text cursor.
It was a real joy when I learned that Canonical did implemented it which we can now enjoy with UBports.
And I want continue with that idea and improve or extend its functionality.

At the moment, I have two prototypes.

[Swipe to trigger cursor mover]
Instead of the current "Press and Hold" gesture to trigger the cursor mover, I made it to work with just a horizontal swipe in the space key. For me, this gesture is more natural while typing unlike the current one which will some kind of disrupt your flow by long pressing before swiping. There's a catch though because there's more chance of accidental trigger especially for those who tend to drag fingers while typing. My experience so far is good though and did an accidental trigger just once.Demo Video

[Swipe to switch OSK language]
This one adds a functionality to change OSK language via swipe in the space key. Some people needs multiple OSK layout/language enabled and it could be a bit hassle to switch between them especially if you have more than 2...remember emoji? yeah that counts I personally don't have this problem so I can''t attest if this one would be really helpful. And also, at the moment, emoji kinda breaks it because it has a very different layout which doesn't have the space key. I'm also planning to propose a new layout for emoji Demo Video

Now I don't have a concrete plan yet on how I will propose these. I'm thinking of adding a Gesture section in the settings app so users can customize the gestures and which functionality they want for them. For example, you can set "PressAndHold" for Cursor Mover then "Horizontal Swipe" for Language switch. But that could be too much settings? can't say yet.

EXPAND IT FURTHER!
Currently, I have another idea to expand this idea further and I'm trying to do a quick hack for it.
The idea is to also use the "cursor mover" feature for text selections/manipulations. My initial thought is to use double click/tap (without releasing) to start the text selection. I would also like to put Copy, paste, select all buttons above the OSK. I want to see and use it first in action before thinking of the best way to implement these gestures. Unfortunately, I can't even do the first step yet which is to enable text selection from the OSK and it seems like I have to modify the C++ part of maliit and recompile which I am not familiar enough.

Any thoughts, opinion, violent reaction, help maybe?

FUN FACT: When I got the idea of the "Space key cursor mover", it was a "Eureka" moment for me and I thought I was the first one in the world to come up with that idea. Then days after that, I saw the exact same functionality on my friend's LG G3. At least it was my original idea and it just happened someone got it first LOL

I'm starting this thread because I wanted to share my ideas about improving the OSK in UT.
Back in the Canonical days, I suggested to use the space key for controlling the text cursor.
It was a real joy when I learned that Canonical did implemented it which we can now enjoy with UBports.
And I want continue with that idea and improve or extend its functionality.

At the moment, I have two prototypes.

[Swipe to trigger cursor mover]
Instead of the current "Press and Hold" gesture to trigger the cursor mover, I made it to work with just a horizontal swipe in the space key. For me, this gesture is more natural while typing unlike the current one which will some kind of disrupt your flow by long pressing before swiping. There's a catch though because there's more chance of accidental trigger especially for those who tend to drag fingers while typing. My experience so far is good though and did an accidental trigger just once.Demo Video

[Swipe to switch OSK language]
This one adds a functionality to change OSK language via swipe in the space key. Some people needs multiple OSK layout/language enabled and it could be a bit hassle to switch between them especially if you have more than 2...remember emoji? yeah that counts I personally don't have this problem so I can''t attest if this one would be really helpful. And also, at the moment, emoji kinda breaks it because it has a very different layout which doesn't have the space key. I'm also planning to propose a new layout for emoji Demo Video

Now I don't have a concrete plan yet on how I will propose these. I'm thinking of adding a Gesture section in the settings app so users can customize the gestures and which functionality they want for them. For example, you can set "PressAndHold" for Cursor Mover then "Horizontal Swipe" for Language switch. But that could be too much settings? can't say yet.

EXPAND IT FURTHER!
Currently, I have another idea to expand this idea further and I'm trying to do a quick hack for it.
The idea is to also use the "cursor mover" feature for text selections/manipulations. My initial thought is to use double click/tap (without releasing) to start the text selection. I would also like to put Copy, paste, select all buttons above the OSK. I want to see and use it first in action before thinking of the best way to implement these gestures. Unfortunately, I can't even do the first step yet which is to enable text selection from the OSK and it seems like I have to modify the C++ part of maliit and recompile which I am not familiar enough.

Any thoughts, opinion, violent reaction, help maybe?

FUN FACT: When I got the idea of the "Space key cursor mover", it was a "Eureka" moment for me and I thought I was the first one in the world to come up with that idea. Then days after that, I saw the exact same functionality on my friend's LG G3. At least it was my original idea and it just happened someone got it first LOL

]]>http://forums.ubports.com/post/14036http://forums.ubports.com/post/14036Sat, 27 Oct 2018 09:01:25 GMT@kugiigi Thanks for that post. I, as a long years user of Canonical UT, and since a few weeks of UBports, was not aware of this cursor mover.
]]>http://forums.ubports.com/post/14038http://forums.ubports.com/post/14038Sat, 27 Oct 2018 10:06:01 GMT@kugiigi said in OSK Enhancements Proposals:

The idea is to also use the "cursor mover" feature for text selections/manipulations.

If you think, that there will be too much settings for an non-advanced user, you can always make it to get OSK settings upgrade from some file, to let more advanced user decide... you know, like, if file ~/.config/osk/setings.json exists, update default config from it.

]]>http://forums.ubports.com/post/14060http://forums.ubports.com/post/14060Sat, 27 Oct 2018 16:20:21 GMTI vote for including in Settings the choice of selecting different options for the space bar hidden function since....I like ALL the implementations and workarounds actual and future you invented Kugi I'm testing the gesture listed at the point 1 and I find it very useful. Good job indeed and keep going on!
]]>http://forums.ubports.com/post/14068http://forums.ubports.com/post/14068Sat, 27 Oct 2018 17:17:37 GMT@kugiigi said in OSK Enhancements Proposals:

not promising that I know how, but happy to think along. where are you at?

]]>http://forums.ubports.com/post/14077http://forums.ubports.com/post/14077Sat, 27 Oct 2018 20:01:17 GMT@doniks successfully compiled via crossbuild but I'm trying to figure out which files only to copy to my device
I don't want install everything cause it might break my OSK and I won't be able to bring it back to working
]]>http://forums.ubports.com/post/14097http://forums.ubports.com/post/14097Sun, 28 Oct 2018 08:19:45 GMT@kugiigi said in OSK Enhancements Proposals:

but I'm trying to figure out which files only to copy to my device
I don't want install everything cause it might break my OSK and I won't be able to bring it back to working

shouldnt it build a deb? then youd getv exactly what you need to install

]]>http://forums.ubports.com/post/14100http://forums.ubports.com/post/14100Sun, 28 Oct 2018 09:26:48 GMT@doniks I cloned the repo locally and compiled via crossbuilder. Crossbuilder is quite easy to use although I had some errors deploying yo my device.

At first, I didn't installed the debs and just picked some files (i.e. *.so) from them and installed manually to my device however that didn't work so reverted back the original files.

Last night, I tried deploying to my other UT install on Nexus 5, however it broke my OSK LOL
And now I don't know how revert it back.
Then I noticed on my main UT install where I manually installed files, that whenever I switch layout, the OSK restarts.

]]>http://forums.ubports.com/post/14216http://forums.ubports.com/post/14216Tue, 30 Oct 2018 20:04:31 GMTFinally got it to compile. The working branch is xenial.
Now let's see if I can put my ideas into reality
]]>http://forums.ubports.com/post/14873http://forums.ubports.com/post/14873Tue, 20 Nov 2018 06:53:36 GMTI would appreciate if someone can help find out how to support modifiers such as shift and control. At the moment, I'm reading the codes and trying to find out where I can add this and having a hard time so far
]]>http://forums.ubports.com/post/14884http://forums.ubports.com/post/14884Tue, 20 Nov 2018 18:14:37 GMTThe onscreen-keyboard could be improved by adding a Select All, Copy, Cut and Paste functionality.
This would greatly accelerate transferring text between UI elements.

The ?123-key is modifed, such that it acts on the TouchEnd event, rather than TouchBegin. Pressing any other key in the meantime cancels the action.

Touch-and-hold the ?123, then touch-and-release the a button selects all text in the current focus UI element.

Touch-and-hold the ?123, then touch-and-release the v button pastes the current clipboard content.

Basically like a conventional keyboard, but the ctrl key is simulated by ?123.

What do you think?

]]>http://forums.ubports.com/post/14890http://forums.ubports.com/post/14890Wed, 21 Nov 2018 00:05:46 GMTAnother feature which could help many users would be an emoji search.
Many OSes do it. I think it's very convenient.

It could be achieved with the existing "word suggestion" feature. For example, if you type "ok" as text it suggests (U+1F44C), or (U+1F984) for "unicorn". Touching the suggested Emoji replaces the typed character sequence.

It also probably is a good idea to provide an "enable" option in the keyboard settings for users who don't like it.

]]>http://forums.ubports.com/post/14891http://forums.ubports.com/post/14891Wed, 21 Nov 2018 00:19:48 GMT@haveaniceday That's a nice idea but I'm not sure if the symbol switcher button is the good place to put it.
What I have in mind right now is to put the buttons where the word ribbon is and they will be displayed only while in "selection mode" AKA as "cursor move" mover at the moment.
If we have these options from the OSK, it's easier to copy and paster things even on currently non-supported (text operations only) toolkits such as QQC2 and Kirigami.

But again, my blocking point is implementing modifier support in the OSK

]]>http://forums.ubports.com/post/14903http://forums.ubports.com/post/14903Wed, 21 Nov 2018 10:01:24 GMTI was finally successful building the keyboard component via crossbuilder.
The key was to build the xenial branch and not the master. Thanks to @myii ! (if that's really you?)

So, I guess I've done enough work and in the state of "is this good enough or does it make sense".
I would like to know your opinion, inputs, suggestions, violent reactions
The codes aren't final as most of the logic are in a "hacky" way of things
And I would greatly appreciate any help on the UI/UX design part as I am really bad with them

Here's a couple of screenshots of the current state.

If you're willing to take the risk, you may try it from this branch (ignore the branch name...I messed it up, should've been xenial_-_advanced LOL)Github link

]]>http://forums.ubports.com/post/15104http://forums.ubports.com/post/15104Wed, 28 Nov 2018 21:09:26 GMT@kugiigi I haven't understood very well how it would work, but I'd put the back button over the space bar and the two arrows instead of the numbers button (?123) and the enter button
]]>http://forums.ubports.com/post/15128http://forums.ubports.com/post/15128Tue, 27 Nov 2018 12:27:44 GMTI've listed short descriptions of the functionalities that I added in the branch I linked.
The "back" button exits the "cursor mover" mode without waiting for the timeout. The arrow keys work like Home and End keys. i originally put them at the bottom but there are tendencies where the user activate the cursor mover swipe and then reswipe again on the same spot so putting the back button there would be a hindrance. The arrow keys would be good to be at the bottom though.
]]>http://forums.ubports.com/post/15131http://forums.ubports.com/post/15131Tue, 27 Nov 2018 13:26:49 GMTHere's a very clear and professionally created video showing the things I've implemented in the OSK so far

]]>http://forums.ubports.com/post/15179http://forums.ubports.com/post/15179Wed, 28 Nov 2018 16:32:39 GMTbut in selection mode you can move only one of the two cursor, am I right?
starting dragging the thumb from the left part of the osk could move the start-selection cursor while starting dragging in the right part could move the end one
]]>http://forums.ubports.com/post/15183http://forums.ubports.com/post/15183Wed, 28 Nov 2018 17:41:49 GMT@jezek most likely they will work but the terminal app already has the keyboard shortcuts which are actually more and more useful there.

@mymike That would be cool but I don't now if there are keyboard shortcuts that do those. Currently, the keys/shortcuts in the OSK are just mapped to actual keyboard shortcuts.