Adafruit_CircuitPython_HID icon indicating copy to clipboard operation
Adafruit_CircuitPython_HID copied to clipboard

Control the speed of layout.write()?

Open tobiashochguertel opened this issue 3 years ago • 2 comments

Is there a way to controll the speed of layout.write(), so that it runs faster? or is there a way to improve the speed of circuitpython on my rasperrypi pico?

I want to do a VS Code Keyboard, which runs things like:

while True:
    led.value = False
    if button.value:
        kbd.send(Keycode.COMMAND, Keycode.SHIFT, Keycode.P)
        # layout.write("Transform to Uppercase\n")
        layout.write("Uppercase\n")
        kbd.release_all()
        led.value = True
    time.sleep(0.2)

But it's reacting slow, or with a delay.

tobiashochguertel avatar Aug 03 '22 21:08 tobiashochguertel

Could you describe more precisely what is happening in terms of delays? Is that the whole program? Is the time.sleep(0.2) for debouncing?

Consider using the keypad module instead of manual debouncing, so you don't need delays: https://learn.adafruit.com/key-pad-matrix-scanning-in-circuitpython

The kbd.release_all() is not necessary, because both .send() and .write()will release keys..write() simply does a lookup for each character and then does a .send()` or the equivalent.

dhalbert avatar Aug 04 '22 11:08 dhalbert

the time.sleep(0.2) is for the LED, to switch on and off - to get a feedback about a button press.

I tried also:

        kbd.send(Keycode.COMMAND, Keycode.SHIFT, Keycode.P)
        # layout.write("Transform to Uppercase\n")
        # layout.write("Uppercase\n")
        kbd.send(Keycode.U)
        kbd.send(Keycode.p)
        kbd.send(Keycode.p)
        kbd.send(Keycode.e)
        kbd.send(Keycode.r)
        kbd.send(Keycode.c)
        kbd.send(Keycode.a)
        kbd.send(Keycode.s)
        kbd.send(Keycode.e)
        kbd.send(Keycode.ENTER)

because that is maybe faster - but, that doesn't work - only the first letter is pressed.

grafik

My issue with ".write" is that it has a delay until the VS Code Command "Trasnform to Uppercase" is done, it's like I press the button on my breadboard, and then I have to wait until my selection is transformed into uppcase. The thing is that, it is still super fast, because I can't see any interaction with VS Code - but the effect takes some time to be then fired.

I created for "Transform to Uppercase" a shortcut, and let my Raspberry Pi Pico press the shortcut - and that gets triggered / transformed direct without waiting.

kbd.send(Keycode.LEFT_CONTROL, Keycode.LEFT_ALT, Keycode.COMMAND, Keycode.KEYPAD_ONE)

tobiashochguertel avatar Aug 04 '22 17:08 tobiashochguertel