I'm putting together a few alternate keyboard layouts (for the default Android keyboard) and wonder if the XDA community can give me some advice.
Colemak was pretty straightforward because the number of keys on each line is fairly similar to QWERTY, but Dvorak is giving me headaches.
For the Dvorak users out there, if you wanted to use it on your phone, what would you like the layout to look like?
My current design looks like so.
Code:
['][,][.][p][y][f][g][c][r][l]
[a][o][e][u][i][d][h][t][n][s]
[q][j][k][x][b][m][w][v][z]
There a few issues with this. First and foremost, there are no shift or delete keys.
Those can't be put on the top row, because you need to be able to long press those keys to get numbers. If users are willing to long press the middle row for numbers, I can put shift and del on top instead of [,] and [.], which you can always find on the bottom row anyways.
Suggestions, comments?
Here's what Colemak looks like.
http[:][//]i.imgur.com/PpH1pl.png
I'll upload a modified LatinIME.apk that you can push to /system/app once Dvorak is done. If you're impatient, the source is at https[:][//]github.com/dickfickling/android_packages_inputmethods_LatinIME (remove brackets... I can't post links)
Does anyone know what happened to the DVORAK keyboard layout in CM 10.1?
Related
Does anyone know how to change the keyboard layout on the Vox/S710 to match the S730.
E.g. Shift the top row of letters (QWERTYUIOP.) to (.QWERTYUIOP) so that typing is more natural?
Hope that makes sense! Any help greatly appreciated.
Hmm... My Vox comes with .QWERTY layout. Anyway, I think you should change the locale in system registry. Try this key (make sure you've created a registry backup first):
HKLM\HARDWARE\DEVICEMAP\KEYBD
Set the value "CurLang" to 0x409 (1049) and reboot the phone. That will probably shift your layout.
wont this just complicate things as ur keys will be messed up. so the letters will be:
.qwertyuiop
but the buttons on the actual keyboard will say:
qwertyuiop.
way more trouble than its worth
Maybe... but I keep making mistakes when typing, as I'm assuming that the keyboard layout is as per a normal keyboard (or Hermes, which is what I used before).
The fix works nicely - for the top row.
But...
Now the number keys are not 'aligned', as per the layout on the keyboard. Is there a way to move these - bearing in mind that the numbers are used using the 'fn' lock?
You might want to try creating your custom layout. With AEKMap you can do most anything with hardware keys. Here it is.
It would take a lot of time to create a layout from scratch, so I suggest using my (Roan) or other people's layouts as templates.
Hope this helps.
Sounds like it's more trouble than it's worth. Depends on how much your personal (or work?) time is valued at I guess..
Just deal with it and get used to the keys. I'd expect it to be different to your Hermes, it's a different phone!
It's not perfect but it would be if it could keep up completely.
HTC_IME Mod keyboard is very cool and is easily the best t9 keyboard out there.
Also the only keyboard I can decently use one handed and I have been able to use it nicely without looking for the most part.
Current version is 27 and you can get it here:
forum.xda-developers.com/showthread.php?t=624416
(sorry can't post links yet... )
I've tried:
Handcent T9 Free
numberpad aka (evenbetter)numberpad $3.99
and a couple other miscellaneous ones paid and free
also tried Swype beta
Some issues I have with it:
There is no next button to choose the next word in order
I haven't figured out how to change the word order yet ie when typing of I get me by default and I personally prefer of.
it could be faster... I force my self to wait for the short vibrate feedback before i press the next letter. Still very quick though, and if you use one hand it is faster because you don't try to hit two buttons at once.
Some settings I have set mine for:
Swipe left deletes last word
Swipe right switches keyboard between t9 and qwerty (you could use compact keyboard as well but I'm not into that sissy stuff)
swipe down hides keyboard
swipe up moves the cursor back a word
Volume up/down moves cursor forward/backward
Many other options as well!
Hi does any one know of a dvorak keyboard layout for our evos? I have a sneaking suspicion that we would see some nice speed gains in typing using that layout.
Sent from my PC36100 using XDA App
I think this would be interesting to have. I tried teaching myself Dvorak last semester, but I had too many things to type up so I was faced with 1) stick with QWERTY and ruin my learning, or 2) use Dvorak and slow my typing down to 15 WPM. Maybe I will give it another shot in the future.
Edit: AnySoftKeyboard in the Market has a Dvorak add-on pack.
I've tried the any keyboard and didn't like it. If we could get that layout for the stock or modded htc keyboard that would be sweet.
I would mod it myself but I have no knowledge of these things and from all the digging haven't been able to figure out where to start.
Sent from my PC36100 using XDA App
I have been doing some digging myself, because I really want this to happen, and it looks like in order to make a dvorak keyboard layout, we would have to start with the source code found here, and build our own.
h**p://android.git.kernel.org/?p=platform/packages/inputmethods/LatinIME.git
The layout information can be found in the java/res/xml/kbd_qwerty.xml file, seen here:
h**p://android.git.kernel.org/?p=platform/packages/inputmethods/LatinIME.git;a=blob;f=java/res/xml/kbd_qwerty.xml
However, the big problem with just changing all those keys to dvorak ones is that the symbol keys on dvorak are on the top, but on the bottom on qwerty. So if you count just the actual letters, the letters per row will be off.
Basically, what we need to do is move the delete key to the upper right, and rearrange the number of keys per row.
I've never done any coding for Android before, and so I've tried, but I'm still trying to figure out if I can build only the LatinIME.
I finally found some time to take this on.
It's not perfect, but maybe it will work for you.
forum.xda-developers.com/showthread.php?t=809930
Edit Aug, 16: I have found out that the XT9 subsystem is used for specifically our docking stations. If you go to Settings -> Languages & Input -> ASUS Keyboard -> About, you'll see the big stupid XT9 icons. Therefore, our keyboards have to be using the XT9 database files and the only way to procure different languages seems to be via ASUS (that's what Nuance's site said anyway). The manipulation of the keyboard dock layout mentioned below seems to be our only way until 1) we procure these additional language files from a different source (might require tweaking), 2) someone with an XT9 license makes the files for us, 3) we find an editor that we can use to create / edit the XT9 files, or 4) we find out how to rework the keyboard framework to use different altogether.
Because of the way our system uses the XT9 subsystem, the JB keyboard update itself won't help us. Officially, it all depends on what ASUS gives us to enable additional langs/layouts for our keyboard docks.
---- Original
All right. Here is what I have collected thus far regarding the way that Androids handle keyboard layouts. I put it here in development as I'm sure only the people in this area would really have an interest/use for it. As I still have yet to satiate my own curiosity and preference for a different keyboard layout, I do hope that somehow someone can figure out how to get us proper alternative keyboard layouts.
----
Our keyboard layouts are spread into 2 separate data form categories: the buttons and the characters. The buttons are the real buttons (physical keyboard or virtual) that have a specific numerical identifier. The characters are the glyphs and their various states that can occur when using character modifier buttons (shift, control, alt, etc) when the associated key number button is pressed.
All of these values are found in "/system/usr" with those found in the "keychars" directory being for the glyphs and the "keylayout" for the arrangement of button number with associate character represented. Both types of files (".kcm" for characters and ".kl" for layours) are really just text documents and seeing the association between the two is easy during comparison:
Example: 'A'
in the "Generic.kcm", it is defined as
Code:
key A {
label: 'A'
base: 'a'
shift, capslock: 'A'
ctrl, alt, meta: none
}
while in the "Generic.kl", it is defined as
Code:
key 30 A
Therefore, Key 30 is Mapped to Key 'A' that can have the states 'a' or 'A'.
Unfortunately, these two files that constitute a layout are combined in the XT9 subsystem and not totally used "as is". There is a configuration text file for the XT9 database that can be found at "/system/usr/xt9/config/databases.conf" and in there you can see mappings of languages to database files (also note that all are derived from QWERTY format). You'll notice that the databases are of type ".kdb", ".ldb", or ".dat". A quick search on the 'Net will tell you that the ".kdb" is a keepass file and ".ldb" is a Microsoft Access file. These are wrong! I suspect they are both the same file type but I do not know of what type they are so I cannot view nor edit them. I have tried the "suggested" programs and I tried SQLite since that format is used for our "registry". I'm thinking that they might be T9 database files but I haven't found an editor to even verify that hypothesis.
The organization used to create our layouts is highly flexible and therefore really complex. There's some type of combination of format + language that is calculated in order to determine the correct layout to use. No wonder ASUS (and practically everybody else) has limited keyboard layouts. Additionally, this scheme also controls the majority of our hardware keyboard buttons as well.
For the physical keyboard dock, we have direct ways of manipulating the hotkeys or brute-forcing the layout within our grasp. The hotkeys are somehow contained in our "/system/app/keyboard.apk" and for the basic layout, all we really need to do is modify the "asusdec.kl" to shoehorn our preferences into the system.
An example to test if you want a DVORAK keyboard layout is to copy & paste this into the asusdec.kl and restart (back up the file first!) and it should now be in DVORAK format (though it will not be selectable from the menu). Same thing for the "Generic.kl" - edit the chars associated with the key numbers and the buttons will change values. I do not recommend this method as it is hacky/evil/dirty/bad and all sorts of other negative adjectives. However, until a better way is found, it may be our only real way of modding the keyboard the way we want.
I humbly ask if there are any of our beloved geniuses with further knowledge on how this system to please post additional information here in hopes that maybe we may create better keyboard options for our devices.
Thanks for reading
PS: Found out that Jelly Bean will have additional keyboard layouts. From this thread, "Android 4.1 includes 27 international keymaps for keyboards, including Dvorak." That's a good thing.
Wow, thanks. The information you've provided, is really helpful, and well layed out.
Sent from my EVO using Tapatalk 2
LMMT said:
Wow, thanks. The information you've provided, is really helpful, and well layed out.
Sent from my EVO using Tapatalk 2
Click to expand...
Click to collapse
I'm glad that you think so though I don't know how helpful this post will actually be. This is a rare topic to find information on and even rarer to find information that is directly useful. However, I hope that the information I provided would be at least enough to give us a direction when/if development for keyboard layouts start.
Maybe I'll go over to the Prime forums later to read up further on any advancements they have made.
alienedd said:
Edit Aug, 16: I have found out that the XT9 subsystem is used for specifically our docking stations. If you go to Settings -> Languages & Input -> ASUS Keyboard -> About, you'll see the big stupid XT9 icons. Therefore, our keyboards have to be using the XT9 database files and the only way to procure different languages seems to be via ASUS (that's what Nuance's site said anyway). The manipulation of the keyboard dock layout mentioned below seems to be our only way until 1) we procure these additional language files from a different source (might require tweaking), 2) someone with an XT9 license makes the files for us, 3) we find an editor that we can use to create / edit the XT9 files, or 4) we find out how to rework the keyboard framework to use different altogether.
Because of the way our system uses the XT9 subsystem, the JB keyboard update itself won't help us. Officially, it all depends on what ASUS gives us to enable additional langs/layouts for our keyboard docks.
Click to expand...
Click to collapse
I've already contacted ASUS regarding is_IS layout and they will not support it, so I would not hope for much change there. It would be great if ASUS would release some kind of remapping tool so we could map the keys correctly ourselves.
I'll be keeping a close eye on this thread, and will post if I find something interesting.
Okay, after googling a bit I found an app called External Keyboard Helper Pro that allows me to enable my layout perfectly on the dock.
I'd recomend people seeing if it has their layout of choice.
Edit: There is a thread here on xda: http://forum.xda-developers.com/showthread.php?t=1541916
Doing these changes after JB
alienedd said:
...
Example: 'A'
in the "Generic.kcm", it is defined as
Code:
key A {
label: 'A'
base: 'a'
shift, capslock: 'A'
ctrl, alt, meta: none
}
while in the "Generic.kl", it is defined as
Code:
key 30 A
Therefore, Key 30 is Mapped to Key 'A' that can have the states 'a' or 'A'.
...
PS: Found out that Jelly Bean will have additional keyboard layouts. From this thread, "Android 4.1 includes 27 international keymaps for keyboards, including Dvorak." That's a good thing.
Click to expand...
Click to collapse
I had modified the .kcm and .kl files in ICS and had successfully mapped Bluetooth->Mute to be F1-F12 while allowing Caps lock (when on ) to restore those buttons to their original function. I had also modified the Lock and Wireless buttons to function as Delete and ESC respectively. I had made a few other changes as well. After updating to Jelly Bean I made a backup of the new files that had overwritten my edits and then recopied my edits over the new files and rebooted. The edits no longer worked at all and most of the keys I had made changes to now did nothing. I then tried to restore the backups of the files I had changed and then rebooted but nothing changed even though they were seemingly back in their original configuration. Does anyone have any clue as to what might have happened?
Also, anyone else have any success in JB in changing their layouts?
daerwynn said:
I had modified the .kcm and .kl files in ICS and had successfully mapped Bluetooth->Mute to be F1-F12 while allowing Caps lock (when on ) to restore those buttons to their original function. I had also modified the Lock and Wireless buttons to function as Delete and ESC respectively. I had made a few other changes as well. After updating to Jelly Bean I made a backup of the new files that had overwritten my edits and then recopied my edits over the new files and rebooted. The edits no longer worked at all and most of the keys I had made changes to now did nothing. I then tried to restore the backups of the files I had changed and then rebooted but nothing changed even though they were seemingly back in their original configuration. Does anyone have any clue as to what might have happened?
Also, anyone else have any success in JB in changing their layouts?
Click to expand...
Click to collapse
No i'm in the same position you are in i managed to edit my kcm file exactly how i wanted it for ICS but now i have "upgraded" to JB and the changes have been lost it appears JB does not use the files in the XT9 folder at all and i cannot find out how to edit it with JB!!! Very frustrating.
All i want is the backslash key to be a backslash in UK "mode". It is producing a # unless i change modes which is very annoying each time i want it. Wondering if there is any other solution than to downgrade back to ICS?
Please help us someone!
Thanks
I really like the jelly bean keyboard. I just miss one feature: after writing a word, for example a name, it is not possible to make the first letter uppercase by pressing the shift button. So you have to erase the word or try to get the cursor to the exact position. Both takes plenty of time especially in non english languages.
Is there any keyboard app which has this feature?
pdppdp said:
I really like the jelly bean keyboard. I just miss one feature: after writing a word, for example a name, it is not possible to make the first letter uppercase by pressing the shift button. So you have to erase the word or try to get the cursor to the exact position. Both takes plenty of time especially in non english languages.
Is there any keyboard app which has this feature?
Click to expand...
Click to collapse
Generally speaking I think that you have to press the shift button before you press the first letter of the name, not afterwords (I'm pretty sure you already know that, but since I don't have jb I don't know how it works there). Apart from that in my humble opinion Smartkeyboard pro is the best keyboard replacement app. It's not free (link to trial version) but it gets the names uppercase and has tons of languages. If you don't want to pay you can try swype you can either type as usual or swype over the letters and you can make a letter uppercase by simply swyping over the shift button - and it offers several languages.
I would recommend SwiftKey. You don't need to do much besides just type letters... You don't even have to hit space. It'll auto add spaces, capitals, punctuation, as well as the BEST (not opinion, this is fact) predictions on any android keyboard.
Shifted from Outer Space