MicroPythonBLEHID icon indicating copy to clipboard operation
MicroPythonBLEHID copied to clipboard

BLE keyboard (ESP32) sends repeating of keys after a single key due to gatts_notify( )

Open vsupacha opened this issue 2 years ago • 3 comments

Error scenario: MicroPython v1.19.1 for ESP32. async keyboard example. A single key causes non-stop repeating of keys. Defect is found to be the calling of self._ble.gatts_notify(self.conn_handle, self.h_rep, state) in notify_hid_report( ).

Preliminary fix Call Keyboard.set_keys( ) without arguments, followed by Keyboard.notify_hid_report( ) after the original code.

vsupacha avatar Feb 25 '23 14:02 vsupacha

A single key causes non-stop repeating of keys.

Is the key pressed (i.e., pushed down and released) or held (i.e., continuously pushed down)?

  • In case of the first, the release of the key should call Keyboard.set_keys() with empty bits, followed by Keyboard.notify_hid_report() as suggested.
  • In case of the second, this is intended behavior.

Heerkog avatar Feb 25 '23 16:02 Heerkog

The key was pressed and released. So I expect that the update in the bluetooth module may break the previous behavior.

BTW, thanks for your code. The module helps me a lot in order to make a game controller for a PC web game.

vsupacha avatar Feb 26 '23 04:02 vsupacha

The key was pressed and released. So I expect that the update in the bluetooth module may break the previous behavior.

Do you have a source for this update? I don't see changes in the documentation.

BTW, thanks for your code. The module helps me a lot in order to make a game controller for a PC web game.

I'm glad my code could help you! Appreciate the feedback!

Heerkog avatar Feb 26 '23 09:02 Heerkog