diff --git a/preload/apps/hid/__init__.py b/preload/apps/hid/__init__.py index 9aaa8c76a0626aebe5aaec3a1ffa846b46af61a1..146c19b7bb57ff0a478595f472d719c1af3e55b2 100644 --- a/preload/apps/hid/__init__.py +++ b/preload/apps/hid/__init__.py @@ -26,31 +26,40 @@ def keyboard_demo(): disp.clear() disp.print(" card10", posy=0) disp.print(" Keyboard", posy=20) - disp.print("F19", posy=60, fg=color.BLUE) - disp.print("Backspace", posy=40, posx=20, fg=color.RED) - disp.print("Type", posy=60, posx=100, fg=color.GREEN) + disp.print("<-F13", posy=60, font=2, fg=color.BLUE) + disp.print("Backspace->", posy=40, font=2, posx=30, fg=color.RED) + disp.print("Type->", posy=60, posx=90, font=2, fg=color.GREEN) disp.update() k = Keyboard(ble_hid.devices) kl = KeyboardLayoutUS(k) + backspace_pressed = False + b_old = buttons.read() while True: b_new = buttons.read() if not b_old == b_new: print(b_new) b_old = b_new - if b_new == buttons.TOP_RIGHT: + if b_new & buttons.TOP_RIGHT: # print("back") # for debug in REPL - k.send(Keycode.BACKSPACE) - - elif b_new == buttons.BOTTOM_RIGHT: + if not backspace_pressed: + k.press(Keycode.BACKSPACE) + backspace_pressed = True + else: + if backspace_pressed: + k.release(Keycode.BACKSPACE) + backspace_pressed = False + + if b_new & buttons.BOTTOM_RIGHT: # use keyboard_layout for words kl.write("Demo with a long text to show how fast a card10 can type!") - elif b_new == buttons.BOTTOM_LEFT: + if b_new & buttons.BOTTOM_LEFT: # add shift modifier - k.send(Keycode.SHIFT, Keycode.F19) + # k.send(Keycode.SHIFT, Keycode.F13) + k.send(Keycode.F13) def mouse_demo(): @@ -72,20 +81,41 @@ def mouse_demo(): m.move(x, y) + def get_buttons(): + b = buttons.read() + return ( + b & buttons.BOTTOM_LEFT, + b & buttons.TOP_RIGHT, + b & buttons.BOTTOM_RIGHT, + ) + sensor = bhi160.BHI160Orientation(sample_rate=10, callback=send_report) b_old = buttons.read() + + left_old, middle_old, right_old = get_buttons() while True: - b_new = buttons.read() - if not b_old == b_new: - print(b_new) - b_old = b_new - if b_new == buttons.TOP_RIGHT: - m.click(Mouse.MIDDLE_BUTTON) - elif b_new == buttons.BOTTOM_RIGHT: - m.click(Mouse.RIGHT_BUTTON) - elif b_new == buttons.BOTTOM_LEFT: - m.click(Mouse.LEFT_BUTTON) + left_new, middle_new, right_new = get_buttons() + + if left_new != left_old: + if left_new: + m.press(Mouse.LEFT_BUTTON) + else: + m.release(Mouse.LEFT_BUTTON) + + if middle_new != middle_old: + if middle_new: + m.press(Mouse.MIDDLE_BUTTON) + else: + m.release(Mouse.MIDDLE_BUTTON) + + if right_new != right_old: + if right_new: + m.press(Mouse.RIGHT_BUTTON) + else: + m.release(Mouse.RIGHT_BUTTON) + + left_old, middle_old, right_old = (left_new, middle_new, right_new) def control_demo():