Keyboard/Button Mapper v4.6.0-foss
APK · 14.3 MB · version code 279 · Android 8.0+ · uploaded Oct 5, 2026
The source store flagged this file with a security warning (Warning). We recommend not installing it. See other versions.
Quick check before downloading
Answer this to unlock the download. It keeps automated downloaders away.
Compared with the latest version
The latest version is v1.1.3, uploaded Dec 17, 2019.
- Size: this file is 14.3 MB; the latest is 3 MB (11.3 MB smaller).
- Android: this version needs Android 8.0+; the latest needs Android 4.4+.
- The latest version asks for 3 more permissions: Prevent the device from sleeping, Receive push notifications, Google Play install referrer.
- The latest version no longer asks for: Precise location, Access local network, Answer phone calls, Bluetooth connect, Call phone, Access all files, Modify audio settings, Show notifications….
File information
- Version
- v4.6.0-foss (279)
- Uploaded
- Oct 5, 2026
- Size
- 14.3 MB
- Requires
- Android 8.0+ (API 26)
- CPU support
- x86 32-bit, x86 64-bit, ARM 32-bit, ARM 64-bit
- Screen
- Small screens and larger
- MD5
- 9a12b9f63ee7c9ca879d59a91925c0da
- Signing certificate (SHA-1)
- DA:51:B7:97:9F:55:09:F1:99:9E:0F:71:65:50:B4:6E:6D:D5:55:40
- Signed by
- CN=Seth Schroeder, OU=Development, O=Independent Developer, L=Mirfield, ST=West Yorkshire, C=UK
- File name
- io-github-sds100-keymapper-279-76971731-9a12b9f63ee7c9ca879d59a91925c0da.apk
- Package
- io.github.sds100.keymapper
- Downloads (all versions)
- 10M+
- Age rating
- PEGI 3 · Everyone
What's new in v4.6.0-foss
• Group constraints with their own AND/OR logic
• New vibrate action with custom duration or haptic effects
• Cycle enabled keyboards action
• Notification constraint
• Turn off, duplicate and rename actions
• Many other bug fixes and improvements
📖 View the complete changelog at: http://keymapper.app/changelog
Permissions (33)
This version requests 33 permissions, 12 of them sensitive.
- Access all files Sensitive android.permission.MANAGE_EXTERNAL_STORAGE
- Answer phone calls Sensitive android.permission.ANSWER_PHONE_CALLS
- Bluetooth connect Sensitive android.permission.BLUETOOTH_CONNECT
- Call phone Sensitive android.permission.CALL_PHONE
- Camera Sensitive android.permission.CAMERA
- Modify shared storage Sensitive android.permission.WRITE_EXTERNAL_STORAGE
- Precise location Sensitive android.permission.ACCESS_FINE_LOCATION
- Read phone status and identity Sensitive android.permission.READ_PHONE_STATE
- Read shared storage Sensitive android.permission.READ_EXTERNAL_STORAGE
- See all installed apps Sensitive android.permission.QUERY_ALL_PACKAGES
- Send sms Sensitive android.permission.SEND_SMS
- Write settings Sensitive android.permission.WRITE_SETTINGS
- Access local network android.permission.ACCESS_LOCAL_NETWORK
- Access notification policy android.permission.ACCESS_NOTIFICATION_POLICY
- Bluetooth android.permission.BLUETOOTH
- Bluetooth admin android.permission.BLUETOOTH_ADMIN
- Change wifi state android.permission.CHANGE_WIFI_STATE
- Control vibration android.permission.VIBRATE
- Expand status bar android.permission.EXPAND_STATUS_BAR
- Full network access android.permission.INTERNET
- Internal broadcast protection (app-defined) io.github.sds100.keymapper.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
- Manager api v23 (custom) moe.shizuku.manager.permission.API_V23
- Modify audio settings android.permission.MODIFY_AUDIO_SETTINGS
- Read logs android.permission.READ_LOGS
- Reorder tasks android.permission.REORDER_TASKS
- Request ignore battery optimizations android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
- Run at startup android.permission.RECEIVE_BOOT_COMPLETED
- Show notifications android.permission.POST_NOTIFICATIONS
- Termux run command (custom) com.termux.permission.RUN_COMMAND
- Use fingerprint hardware android.permission.USE_FINGERPRINT
- View Wi-Fi connections android.permission.ACCESS_WIFI_STATE
- View network connections android.permission.ACCESS_NETWORK_STATE
- Write secure settings android.permission.WRITE_SECURE_SETTINGS
Security & authenticity
Security rating: Warning
Signing certificate
- Certificate issued to “Independent Developer” Not the developer's name (“sds100”). Names in certificates can't be verified, so this alone proves nothing.
- Other versions use a different certificate v1.1.3. Android normally won't update an installed app with a file signed by another certificate, and a new certificate can mean a different publisher. v1.1.3
Store checks
- Developer signature check failed Oct 5, 2026
- Uploaded by “8818freak” 157 followers · uploading since 2020
Scans come from the source store; the certificate comparisons are AAPKs's own, made from the files' published signatures (1 other version compared). AAPKs doesn't scan files itself.
How to install Keyboard/Button Mapper on Android 8.0+
You'll need about 28.6 MB of free space.
- Download the APK — tap Download APK above (14.3 MB). Chrome shows “File might be harmful” for every APK file; choose Download anyway only if you trust this file.
- Open the file — tap the download notification, or open Files › Downloads and tap io-github-sds100-keymapper-279-76971731-9a12b9f63ee7c9ca879d59a91925c0da.apk.
- Allow the install (first time only) — Android 8 and later asks for permission the first time an app opens an APK: tap Settings in the prompt, turn on Allow from this source, then go back. Manual path: Settings › Apps › Special app access › Install unknown apps (on Samsung: Settings › Apps › ⋮ › Special access). On Android 7 and older: Settings › Security › Unknown sources.
- Check the file (optional) — the MD5 of the downloaded file should be 9a12b9f63ee7c9ca879d59a91925c0da. If it differs, the file is damaged or was changed: delete it and download again.
- Tap Install — Android asks “Do you want to install this app?”. The source store flagged this file with a security warning; we recommend not installing it. If Play Protect blocks it, tap Cancel. If an earlier version is installed, this one only installs as an update when it is signed with the same certificate (SHA-1 shown above).
- Open Keyboard/Button Mapper — tap Open on the install screen, or find it in your app drawer.
Common install problems
- “App not installed” — a version signed with a different certificate, or a newer version, is already installed (Android doesn't allow downgrades). Uninstall it first; back up your data, because uninstalling deletes it.
- “There was a problem parsing the package” — the file is incomplete, or your Android is too old (this version needs Android 8.0+). Download it again, or pick an older version.
- “App not compatible with your device” — this build contains native code for x86 32-bit, x86 64-bit, ARM 32-bit, ARM 64-bit only. Devices with other processors can't install it.
- Blocked by Play Protect — Play Protect checks apps from outside the Play Store. Only continue if you trust the source; for this file we recommend not to.