[GUIDE] How to enable Swiftkey on Kindle Fire

Search This thread

vtluu

Member
Aug 11, 2011
35
30
San Jose, CA
plus.google.com
UPDATE: updated instructions for Swiftkey X version 2.2.0.35 (released 11/18/2011) and later.
UPDATE 2: added known values for some other keyboard apps.
UPDATE 3: added warning, split the copying and chown/chmod step into two separate steps.


These instructions assume:
  1. You've already rooted your KF and have ADB access.
  2. You have the adb.exe debug shell installed. This is included with some rooting kits, or you can install the Android SDK (software development kit) from Google and get ADB straight from the source. The examples assume you have a directory called "C:\Android" where adb.exe is installed but yours may be installed elsewhere.
  3. You've got some way of installing the Swiftkey X app, either by installing Android Market or by sideloading the apk.
  4. You're using the purchased version of Swiftkey X (not the tablet version, not any beta or free version that might be out there).
  5. You've got a SQLite editing software (or can use "sqlite3" itself); the instructions below use the free SQLite Database Browser 2.0 which can be downloaded from Sourceforge; just Google for "sqlite browser" (sorry as a n00b I can't post links).
WARNING: use these instructions at your own risk! Modifying, removing or incorrectly setting the permissions on the settings database can result in a non-booting device!

ALTERNATIVELY, you can use various Android apps to edit the database on the device without using ADB, and skip many of the steps below. Posts further down this thread has some recommendations for such apps. Two caveats if using such an app: make sure it doesn't alter the settings.db file ownership or permissions, and be very cateful when modifying the database entry, as there is a tendency for the keyboard or cut-and-paste to "helpfully" insert spaces or change capitalization.

If you try and install Swiftkey as you normally would, you'll get stuck at installation's step 2, which requires you to enable Swiftkey as an input method by redirecting you to the device's input method settings window; in the case of the KF, the option to enable alternate keyboard has been omitted, but as others (thanks PSXtreme and mfisch) have found it's possible to get around this problem and successfully install an alternate keyboard.
  1. Connect the KF to your computer via USB.
  2. When the Kindle tells you that USB storage is enabled, press the "Disconnect" button to disable it (having the USB storage mounted will prevent us from using ADB to copy to the sdcard directory).
  3. Open an ADB shell and use it to make a backup copy of the settings database file (settings.db), and then to a directory where you can edit it (we'll use /mnt/sdcard/Download here) (stuff you need to enter below is in boldface):
    C:\android>adb shell
    $ su
    # cd /data/data/com.android.providers.settings/databases
    # cp settings.db settings.db.bak
    # cp settings.db /mnt/sdcard/Download
  4. Now enable USB storage by tapping on the KF's top notification bar and then on "USB is Connected / Select to copy files..."
  5. Open the SQLite Browser, and then open the settings.db file you copied by navigating to the mounted USB drive (e.g. D:\Download\settings.db).
  6. Click on SQLite Browser's "Browse Data" tab, and then "secure" from the droplist of tables. Find the row with the entry named "enabled_input_methods" (it's number 19, ID 21 in my file); you may need to widen the columns to see the full name.
  7. Double-click on the entry's "value"; this will open an "Edit database cell" dialog.
  8. The default value of the entry should be "com.android.inputmethod.latin/.LatinIME"; regardless, you want to add ":com.touchtype.swiftkey/.KeyboardService" to it (the ":" is a separator), e.g. changing the value to "com.android.inputmethod.latin/.LatinIME:com.touchtype.swiftkey/.KeyboardService". (Note: if you're installing a different keyboard program, you'll substitute a different value; I found the correct value for mine by downloading the settings.db file from another Android device with Swiftkey already installed.)
    UPDATE: for Swiftkey X versions 2.2.0.35 (released 11/18/2011) and later, the value to be added is ":com.touchtype.swiftkey/com.touchtype.KeyboardService", so the resulting enabled_input_methods value is: "com.android.inputmethod.latin/.LatinIME:com.touchtype.swiftkey/com.touchtype.KeyboardService"
    UPDATE 2: here's a list of known values for various keyboard apps:
    Swiftkey (paid version): com.touchtype.swiftkey/com.touchtype.KeyboardService
    Swiftkey Tablet (paid version): com.touchtype.swiftkey.tablet.full/com.touchtype.KeyboardService
    Swype: com.swype.android.inputmethod/.SwypeInputMethod
    SymbolsKeyboard & TextArt Pro: com.mobisters.textart.pro/.AsciiTextArtKeyboardPro
    SlideIT: com.dasur.slideit/.SlideITIME
    Graffiti Pro: com.access_company.graffiti_pro/.Graffiti
    FlexT9: com.nuance.flext9.input/.IME
    Beansoft Thumb Keyboard: com.beansoft.keyboardplus/.LatinIME
    Hacker's Keyboard: org.pocketworkstation.pckeyboard/.LatinIME
    Simeji: com.adamrocker.android.input.simeji/.OpenWnnSimeji
  9. After you've changed the entry and double-checked you got it right, hit the "Apply Changes" button, close the dialog, and save your changes to the settings.db file. You can now close the SQLite Browser.
  10. Disable USB storage again by hitting the "Disconnect" button on the KF.
  11. Back in the ADB shell, copy the modified settings.db file back to its original location:
    # cp /mnt/sdcard/Download/settings.db .
  12. Still in the ADB shell, fix the file owner and permissions (IMPORTANT! skipping this step can prevent your KF from booting properly!):
    # chown system.system settings.*
    # chmod 660 settings.*
    # ls -l
    -rw-rw---- system system 22528 2011-11-17 21:04 settings.db
    -rw-rw---- system system 22528 2011-11-17 17:30 settings.db.bak​
    (The last command just confirms your handywork.)
  13. Reboot the Android device using the ADB "reboot" command:
    # reboot
  14. Once rebooted, you can proceed with the Swiftkey installation. When you reach step 2 of the installation and it directs you to the KF input settings window, you can return from settings window and if you've correctly modified the settings it won't complain that you haven't enabled Swiftkey, and you can go on with the rest of the installation process.
  15. After finishing the install, long-press on a text field to bring up the "Select input method" pop-up menu, which will allow you to switch between the Kindle keyboard and Swiftkey X.
Voila!
 
Last edited:

ZzFDKzZ

Senior Member
Mar 22, 2006
621
21
I love Swiftkey on my phone but damn this looks so complicated. Thanks though for getting it to work on our devices.
 

vtluu

Member
Aug 11, 2011
35
30
San Jose, CA
plus.google.com
Interesting timing. A new version of Swiftkey X was released this morning that changed the input methods path; I've updated the instructions above.

If you updated Swiftkey and found it no longer working, as I did, all you need to do is edit the settings.db file using the procedures described above, and reboot the device, after which you can select Swiftkey X as an input method again.
 

scrotty

Member
Nov 18, 2011
42
17
Can you unroot after completing this guide and still keep Swiftkey? Or, in other words, can I temporarily root my KF just to install Swiftkey?

Thanks!
 
Last edited:

vtluu

Member
Aug 11, 2011
35
30
San Jose, CA
plus.google.com
scrotty, yes you can unroot your KF after--I've done that so I can play Amazon videos--and Swiftkey will keep working just fine.

Why not the tablet version? The mobile phone version just happens to be what I have purchased. I might eventually get the tablet version but I find the phone version works pretty well, and in landscape mode the keyboard isn't too wide for my thumbs and I don't find myself needing a split keyboard.
 

scrotty

Member
Nov 18, 2011
42
17
scrotty, yes you can unroot your KF after--I've done that so I can play Amazon videos--and Swiftkey will keep working just fine.
Cool. I decided to use Voodoo OTA RootKeeper for now, but it's good to know a full unroot is viable.

Why not the tablet version? The mobile phone version just happens to be what I have purchased. I might eventually get the tablet version but I find the phone version works pretty well, and in landscape mode the keyboard isn't too wide for my thumbs and I don't find myself needing a split keyboard.
That's exactly what I was hoping to hear! :)

Thanks!
 

mewshi

Senior Member
Dec 27, 2009
73
11
This works great.

Maybe a list of what should be added for different keyboards in the first post? :)
 

CBMC

Senior Member
Apr 12, 2009
570
105
Anyone have the value for the Tablet version of swiftkey? It isn't the same as the phone version and I can't install the Tablet version on my phone to check it(it won't let me). Any help is appreciated.
 
Last edited:

brian112358

Member
Nov 17, 2011
24
6
Just figured out the value for Swiftkey X Tablet (v 2.1.0.223):

com.touchtype.swiftkey.tablet.full/.KeyboardService

Not sure (didn't test yet), but it's probably com.touchtype.swiftkey.tablet.full/com.touchtype.KeyboardService for the newer version [EDIT: confirmed by scrotty]
 
Last edited:
  • Like
Reactions: CBMC

scrotty

Member
Nov 18, 2011
42
17
By the way, with Swiftkey Tablet X, I did not get the number pad in the middle when in landscape mode.

On a hunch, I figured that this was due to the KF's resolution. So I installed the free LCD Resolution app from the Marketplace and set the pixel density from 160 (KF default) to 155. That was sufficient to get the number pad to appear.

WARNING: I tried to set the density to 159 at one point (just to set if I could get it as close to 160 as possible). That value seemed to prevent the KF from restarting (stuck forever at "Kindle Fire")! Thankfully, I had not selected the "apply setting on boot" option in the resolution app and so a simple reboot restored to the default 160 pixel density and the KF started properly. Whew!
 

CrackMonkey91

Senior Member
Apr 5, 2010
177
16
I'm waiting for a easier way to do it with out risking so much cause knowing me I would mess up something. Keep of the good work

Sent from my Kindle Fire using Tapatalk
 

vtluu

Member
Aug 11, 2011
35
30
San Jose, CA
plus.google.com
Any ideas if something similar would work on the Nook Tablet?
If the NT has the same limitation (i.e. no UI to allow alternate keyboard) I would imagine the same procedure could work, yes. That assumes B&N hasn't screwed around with the text input field code to prevent you from selecting between enabled keyboards (via long-press on text intput field).

Only one way to find out... good luck! :D
 

Top Liked Posts

  • There are no posts matching your filters.
  • 13
    UPDATE: updated instructions for Swiftkey X version 2.2.0.35 (released 11/18/2011) and later.
    UPDATE 2: added known values for some other keyboard apps.
    UPDATE 3: added warning, split the copying and chown/chmod step into two separate steps.


    These instructions assume:
    1. You've already rooted your KF and have ADB access.
    2. You have the adb.exe debug shell installed. This is included with some rooting kits, or you can install the Android SDK (software development kit) from Google and get ADB straight from the source. The examples assume you have a directory called "C:\Android" where adb.exe is installed but yours may be installed elsewhere.
    3. You've got some way of installing the Swiftkey X app, either by installing Android Market or by sideloading the apk.
    4. You're using the purchased version of Swiftkey X (not the tablet version, not any beta or free version that might be out there).
    5. You've got a SQLite editing software (or can use "sqlite3" itself); the instructions below use the free SQLite Database Browser 2.0 which can be downloaded from Sourceforge; just Google for "sqlite browser" (sorry as a n00b I can't post links).
    WARNING: use these instructions at your own risk! Modifying, removing or incorrectly setting the permissions on the settings database can result in a non-booting device!

    ALTERNATIVELY, you can use various Android apps to edit the database on the device without using ADB, and skip many of the steps below. Posts further down this thread has some recommendations for such apps. Two caveats if using such an app: make sure it doesn't alter the settings.db file ownership or permissions, and be very cateful when modifying the database entry, as there is a tendency for the keyboard or cut-and-paste to "helpfully" insert spaces or change capitalization.

    If you try and install Swiftkey as you normally would, you'll get stuck at installation's step 2, which requires you to enable Swiftkey as an input method by redirecting you to the device's input method settings window; in the case of the KF, the option to enable alternate keyboard has been omitted, but as others (thanks PSXtreme and mfisch) have found it's possible to get around this problem and successfully install an alternate keyboard.
    1. Connect the KF to your computer via USB.
    2. When the Kindle tells you that USB storage is enabled, press the "Disconnect" button to disable it (having the USB storage mounted will prevent us from using ADB to copy to the sdcard directory).
    3. Open an ADB shell and use it to make a backup copy of the settings database file (settings.db), and then to a directory where you can edit it (we'll use /mnt/sdcard/Download here) (stuff you need to enter below is in boldface):
      C:\android>adb shell
      $ su
      # cd /data/data/com.android.providers.settings/databases
      # cp settings.db settings.db.bak
      # cp settings.db /mnt/sdcard/Download
    4. Now enable USB storage by tapping on the KF's top notification bar and then on "USB is Connected / Select to copy files..."
    5. Open the SQLite Browser, and then open the settings.db file you copied by navigating to the mounted USB drive (e.g. D:\Download\settings.db).
    6. Click on SQLite Browser's "Browse Data" tab, and then "secure" from the droplist of tables. Find the row with the entry named "enabled_input_methods" (it's number 19, ID 21 in my file); you may need to widen the columns to see the full name.
    7. Double-click on the entry's "value"; this will open an "Edit database cell" dialog.
    8. The default value of the entry should be "com.android.inputmethod.latin/.LatinIME"; regardless, you want to add ":com.touchtype.swiftkey/.KeyboardService" to it (the ":" is a separator), e.g. changing the value to "com.android.inputmethod.latin/.LatinIME:com.touchtype.swiftkey/.KeyboardService". (Note: if you're installing a different keyboard program, you'll substitute a different value; I found the correct value for mine by downloading the settings.db file from another Android device with Swiftkey already installed.)
      UPDATE: for Swiftkey X versions 2.2.0.35 (released 11/18/2011) and later, the value to be added is ":com.touchtype.swiftkey/com.touchtype.KeyboardService", so the resulting enabled_input_methods value is: "com.android.inputmethod.latin/.LatinIME:com.touchtype.swiftkey/com.touchtype.KeyboardService"
      UPDATE 2: here's a list of known values for various keyboard apps:
      Swiftkey (paid version): com.touchtype.swiftkey/com.touchtype.KeyboardService
      Swiftkey Tablet (paid version): com.touchtype.swiftkey.tablet.full/com.touchtype.KeyboardService
      Swype: com.swype.android.inputmethod/.SwypeInputMethod
      SymbolsKeyboard & TextArt Pro: com.mobisters.textart.pro/.AsciiTextArtKeyboardPro
      SlideIT: com.dasur.slideit/.SlideITIME
      Graffiti Pro: com.access_company.graffiti_pro/.Graffiti
      FlexT9: com.nuance.flext9.input/.IME
      Beansoft Thumb Keyboard: com.beansoft.keyboardplus/.LatinIME
      Hacker's Keyboard: org.pocketworkstation.pckeyboard/.LatinIME
      Simeji: com.adamrocker.android.input.simeji/.OpenWnnSimeji
    9. After you've changed the entry and double-checked you got it right, hit the "Apply Changes" button, close the dialog, and save your changes to the settings.db file. You can now close the SQLite Browser.
    10. Disable USB storage again by hitting the "Disconnect" button on the KF.
    11. Back in the ADB shell, copy the modified settings.db file back to its original location:
      # cp /mnt/sdcard/Download/settings.db .
    12. Still in the ADB shell, fix the file owner and permissions (IMPORTANT! skipping this step can prevent your KF from booting properly!):
      # chown system.system settings.*
      # chmod 660 settings.*
      # ls -l
      -rw-rw---- system system 22528 2011-11-17 21:04 settings.db
      -rw-rw---- system system 22528 2011-11-17 17:30 settings.db.bak​
      (The last command just confirms your handywork.)
    13. Reboot the Android device using the ADB "reboot" command:
      # reboot
    14. Once rebooted, you can proceed with the Swiftkey installation. When you reach step 2 of the installation and it directs you to the KF input settings window, you can return from settings window and if you've correctly modified the settings it won't complain that you haven't enabled Swiftkey, and you can go on with the rest of the installation process.
    15. After finishing the install, long-press on a text field to bring up the "Select input method" pop-up menu, which will allow you to switch between the Kindle keyboard and Swiftkey X.
    Voila!
    2
    scrotty, yes you can unroot your KF after--I've done that so I can play Amazon videos--and Swiftkey will keep working just fine.

    Why not the tablet version? The mobile phone version just happens to be what I have purchased. I might eventually get the tablet version but I find the phone version works pretty well, and in landscape mode the keyboard isn't too wide for my thumbs and I don't find myself needing a split keyboard.
    1
    Just figured out the value for Swiftkey X Tablet (v 2.1.0.223):

    com.touchtype.swiftkey.tablet.full/.KeyboardService

    Not sure (didn't test yet), but it's probably com.touchtype.swiftkey.tablet.full/com.touchtype.KeyboardService for the newer version [EDIT: confirmed by scrotty]
    1
    Google Japanese Input code

    Thanks for Information.

    This is for Google Japanese Input

    com.google.android.inputmethod.japanese/.MozcService
    1
    Simpler way... (foolproof)

    there's a simpler method to use swiftkey on KF.
    The one that moves the swiftkey.app form app/data to system/data... ;)