Boot your encrypted Android without keyboard
Last week i bought a Xiaomi MiPad 2 (it's a great tablet for 200€ !), it came without official keyboard so i've installed the google keyboard from the playstore
When i've installed Meraki System Manager i was forced to encrypt my data partition but after a reboot a pin for unencryption was prompted but without a keyboard !
Indeed, the google keyboard is installed but in the encrypted partition .... (/data/app) so after some search i found a solution but **YOU NEED ADB ACTIVE** on your tablet !
In the first time you need to boot your phone/tablet.
Connect your phone/tablet to your computer, and check if it recognized by adb
$ adb devices
List of devices xxxxxxxxxxxxxx
If your phone/tablet is recognized your good !
So now you need to enter your pin through adb with 'input keyevent'
$ adb shell input keyevent 7
$ adb shell input keyevent 8
$ adb shell input keyevent 9
$ adb shell input keyevent 10
in this exemple i write 0123 on the pin screen
here's the list of the keyevents for numbers
0 => 7
1 => 8
2 => 9
3 => 10
4 => 11
5 => 12
6 => 13
7 => 14
8 => 15
9 => 16
And finally press enter !
$ adb shell input keyevent 66
Congrats, android boot !
Okay our android has booted but now we need to fix the keyboard !
The solution is to move the keyboard from **/data** to **/system**.
Go to the adb shell
$ adb shell
# Grant the su shell with superuser
> su
> mount -o remount,rw /system #remount the /system with read/write permissions
> cd /data/app
> ls
# You should see the folder of the google keyboard, com.google.android.inputmethod.latin-1
# Create the folder structure with the existent structure from the /data/app folder
> mkdir /system/app/com.google.android.inputmethod.latin-1
> mkdir /system/app/com.google.android.inputmethod.latin-1/lib
> mkdir /system/app/com.google.android.inputmethod.latin-1/lib/x86_64
> cd /data/app/com.google.android.inputmethod.latin-1
> cp base.apk /system/app/com.google.android.inputmethod.latin-1/
> cd lib/x86_64
> cp *.so /system/app/com.google.android.inputmethod.latin-1/lib/x86_64
> chmod 755 /system/app/com.google.android.inputmethod.latin-1
> chmod 755 /system/app/com.google.android.inputmethod.latin-1/lib
> chmod 755 /system/app/com.google.android.inputmethod.latin-1/lib/x86_64
> chmod 644 /system/app/com.google.android.inputmethod.latin-1/base.apk
> chmod 644 /system/app/com.google.android.inputmethod.latin-1/lib/x86_64/*.so
> reboot
_I've manually recreated all the folders and copy file per file because a simple mv/cp won't work (i don't know why and i didn't had the time to find why)_
After the reboot you should be able to enter your pin with the google keyboard :)