The key layout files themselves can be stored in various locations and Android refers to them in the following hierarchy: /system/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl /system/usr/keylayout/Vendor_XXXX_Product_XXXX.kl /system/usr/keylayout/DEVICE_NAME.kl /data/system/devices/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl /data/system/devices/keylayout/Vendor_XXXX_Product_XXXX.kl /data/system/devices/keylayout/DEVICE_NAME.kl /system/usr/keylayout/Generic.kl /data/system/devices/keylayout/Generic.kl As Generic.kl file acts as the default file used in the case a mapping was not found, the documentation strongly recommends that we do not modify it. So first thing was to download the /system/usr/keylayout/Generic.kl file (Using AirDroid) and renaming to “Vendor_1915_Product_af11.kl”, which is the correct name determined by looking at /proc/bus/input/devices. http://developer.android.com/reference/android/view/KeyEvent.html Enter the ADB shell, and update the permissions of your new keylayout file: Code: E:\Thrive>adb shell sh-4.1# chmod 644 /system/usr/keylayout/Vendor_0557_Product_2221.kl chmod 644 /system/usr/keylayout/Vendor_0557_Product_2221.kl After a few tedious forum readings, I found out the problem.. I haven’t set the permissions correctly! Apparently, on Android 4.1 this didn’t matter (Or perhaps default mask for the keylayout dir was correct?!), but on Android 4.2.2 the file had permissions “-rw——-“. I used ES Explorer to set the permissions to the same as the Generic.kl file (-rw-r–r–), replugged the dongle, and voila! The keys are now working! MeLe Remote: Vendor_1915_Product_af11.kl