Skip to content

Releases: Arian04/android-hid-client

v3.0.1

29 Aug 19:35
6bcf734
Compare
Choose a tag to compare

Patch release to fix incorrect APK upload to IzzyOnDroid repo (#75)

Includes no functional changes compared to v3.0.1

v3.0.0

29 Aug 17:10
db180c9
Compare
Choose a tag to compare

NOTE: As with any major releases of this app, the best way to update to this version is to:

  1. update the app (do not open it after updating).
  2. reboot your device (this clears out any USB gadget configurations).
  3. you may now open the app (or not, whatever you want, my point is now you're in a good state), then you should be able to use it as normal.

Features

USB Gadget / Character Device Handling Improvements

  • Refactor fragile shell scripts into a service that runs Kotlin code with root permissions, allowing for more complicated logic and such
  • Add support for "Experimental Mode", which makes several experimental options available
  • One experimental option is a button (under the Troubleshooting page) to delete the character devices. Be warned that some devices do not play nicely with this. For example, I patched my Pixel 5's kernel because it would kernel panic due to a use-after-free bug when deleting the character devices.
  • The other category of experimental options is the "Device-Specific Quirks" sub-menu in the app's Settings page. Only use these if the app is not functioning as intended and believe one of the options could fix the issue for you. Ideally, you shouldn't need to touch them.

Touchpad Improvements

  • Touchpad can now present itself to the connected device as an actual trackpad (not a mouse). This means the OS can handle things like gestures automatically. This is optional, and can be opted into by enabling the "Precision Touchpad" option on the settings page. This mode works great when connected to a device running Linux or Android, however, it does not currently work on Windows or MacOS (haven't tested if MacOS just needs a third party precision touchpad driver yet though).
  • Experimental "loopback mode" that makes the touchpad behave as if it's connected to your Android device. This can be used to control a cursor on a connected external display.
  • Added "Fullscreen touchpad in landscape" option, which does exactly what it says

Other Changes

  • Adjust padding on the main screen
  • Reorganized the settings screen a bit
  • Bump versions of many dependencies
  • Many, many bug fixes

Full Changelog: v2.3.0...v3.0.0

v3.0.0-beta2

15 Jun 18:15
f056958
Compare
Choose a tag to compare
v3.0.0-beta2 Pre-release
Pre-release

Just some bug fixes on top of changes in v3.0.0-beta

Notable Bug fixes

  • USB Gadget not resetting correctly
  • Character devices not automatically having their permissions fixed on creation

Full Changelog: v3.0.0-beta...v3.0.0-beta2

v3.0.0-beta

06 Jun 19:13
e3584f8
Compare
Choose a tag to compare
v3.0.0-beta Pre-release
Pre-release

NOTE: As with any major releases of this app, the best way to update to this version is to:

  1. update the app (do not open it after updating).
  2. reboot your device (this clears out any USB gadget configurations).
  3. you may now open the app (or not, whatever you want, my point is now you're in a good state), then you should be able to use it as normal.

Features

USB Gadget / Character Device Handling Improvements

  • Refactor fragile shell scripts into Service that runs Kotlin code with root permissions, allowing for more complicated logic and such
  • Add support for "Experimental Mode", which makes several experimental options available
  • One experimental option is a button (under the Troubleshooting page) to delete the character devices. Be warned that some devices do not play nicely with this. For example, I patched my Pixel 5's kernel because it would kernel panic due to a use-after-free bug when deleting the character devices.
  • The other category of experimental options is the "Device-Specific Quirks" sub-menu in the app's Settings page. Only use these if the app is not functioning as intended and believe one of the options could fix the issue for you. Ideally, you shouldn't need to touch them.

Touchpad Improvements

  • Touchpad now presents itself to the connected device as an actual trackpad (not a mouse). This means the OS can handle things like gestures automatically. I removed the old code that made it present as a mouse, but if anyone wants that to remain an option for some reason, feel free to open an issue.
  • Experimental "loopback mode" that makes the touchpad behave as if it's connected to your Android device. This can be used to control a cursor on a connected external display.
  • Added "Fullscreen touchpad in landscape" option, which does exactly what it says

Other Changes

  • Adjust padding on the main screen
  • Reorganized the settings screen a bit
  • Bump versions of many dependencies
  • Many, many bug fixes

Full Changelog: v2.3.0...v3.0.0-beta

v2.3.0

30 Jun 21:12
be4c5fb
Compare
Choose a tag to compare

Completely rewrote the majority of the app. If there are any bugs, please let me know.

Features

  • New screen that provides troubleshooting information to help troubleshoot device-specific issues
  • Support for "Material You" AKA dynamic colors
  • Support for switching between light/dark mode irrespective of system setting

Other Changes

  • Dropped support for the "fix automatically" preference because it wasn't integrated well and not something I want to support. I'd rather have error messages be visible and errors that occur frequently be noticed and reported.
  • Partially implemented several future features, they'll be released once I polish them up.

Full Changelog: v2.2.1...v2.3.0

v2.2.1

16 Apr 01:34
529c723
Compare
Choose a tag to compare

Bugfixes

  • Fix onboarding screen showing every time app is opened rather than only the first time

Other Changes (not user-facing)

  • Bump AGP version from 8.3.0 to 8.3.1

Full Changelog: v2.2.0...v2.2.1

v2.2.0

13 Apr 21:35
7674cd3
Compare
Choose a tag to compare

NOTE: Since Hacker's Keyboard is unmaintained, I am now recommending Unexpected Keyboard.

Features

  • extend support down to API level 26 (Android 8 - Oreo)
  • improve touchpad input handling (clicks send better, triple-finger middle clicks work now)

Bugfixes

  • fix crash on Android versions < 12
  • fix crash if shell commands time out
  • handle various errors more gracefully, giving the user more information about what the problem is
  • handle default Android gadgets that aren't named g1

Other Changes (not user-facing)

  • don't create the HID "out" endpoint anymore since the app doesn't use it
  • replace my custom shell utility classes with libsu which should be way more robust
  • set up instrumented testing, which should hopefully help me catch bugs more easily, since previously I was only testing on my main device, because manually starting up an emulator and testing the app for every supported API level after every commit is incredibly tedious and unreasonable.

Full Changelog: v2.1.0...v2.2.0

v2.1.0

27 Mar 00:34
44da0b3
Compare
Choose a tag to compare

NOTE: Like with the last release, the best way to update this version is to reboot your device, update the app, open the app only after the update (not before), then you should be able to use it as normal. I would normally increment the major version due to this, but the last release wasn't even 12 hours ago so I'm basically counting this as part of it. It'll also hopefully be the last change requiring a reboot for a long time, since I'm making all these gadget improvements at once and I don't see a reason they should have to change for a while.

Changes (user-facing):

  • HID functions can now be used WITH the standard Android USB features, no more needing to disable the standard USB features in order to use the app!
  • Roughly 4x smaller APK file size
  • Chinese Simplified Translation (thanks to @WeiguangTWK)

Changes (other):

  • Bump commons-codec dependency to 1.16.1
  • Enable minification and optimization without obfuscation (which is why, as mentioned above, the APK is much smaller)

v2.0.0

26 Mar 15:56
262eedd
Compare
Choose a tag to compare

NOTE: Major version bump due to breaking change. Previous release was a "maybe" as far as whether or not the modified keyboard report descriptor would cause issues on people's devices, but this release adds mouse support, so the character devices will need to be recreated. The script might work to modify the existing USB gadget created by the older version, but absolutely no guarantees on that. Your best bet is to follow the same procedure explained in the previous release. For clarity, reboot your device, update the app, open the app only after the update (not before), then you should be able to use it as normal.

Changes (user-facing):

  • Added mouse support!!!!
  • Added support for enabling or disabling the HID gadget within the app, meaning you can now restore the standard Android USB gadget features without using another app.
  • Improved the initial onboarding screen that explains a bit about the app

Changes (other):

  • removed Google's encrypted blob from builds
  • update dependencies
  • lots of refactoring

v1.1.0

24 Mar 18:35
e8b2b95
Compare
Choose a tag to compare

Edit: Fixed and updated attached APK to include the right version code and version name

NOTE: I've changed the keyboard character device to make it more efficient and less over-complicated. If you update, I THINK the previously-created character device should work fine, but to be safe (or if you experience problems), reboot (in order to delete the old character device), then update the app, then finally let it create the new character device.

Changes (user-facing):

  • Keyboard character device simplification mentioned above
  • Fix bug that caused app to not work on Android 13
  • Add debug mode option that allows user to enable and export logs (the only real purpose of this is to make it easier for a user to send me logs if they experience a bug)
  • Removed option to create the character device(s) on boot because I didn't make it clear to users that this will make USB debugging unavailable and it doesn't really provide a significant advantage
  • Removed option to default to ignoring issues as they arise, because I don't think that has a good reason for existing beyond potentially causing problems if someone has it selected without understanding the ramifications (or accidentally enabled it)

Changes (other):

  • Simplify SELinux policy code so it should work on all future Android versions unless they make a significant breaking change that goes against assumptions mentioned in their SELinux documentation page.
  • Greatly simplified all shell command code (lead to more error-checking and less code duplication).
  • Misc other improvements to code