This driver simulates USB HID devices. Currently keyboard and mouse are implemented.
This driver depends on:
Please ensure all dependencies are available on the CircuitPython filesystem. This is easily achieved by downloading the Adafruit library and driver bundle.
Keyboard class sends keypress reports for a USB keyboard device to the host.
Keycode class defines USB HID keycodes to send using
from adafruit_hid.keyboard import Keyboard from adafruit_hid.keycode import Keycode # Set up a keyboard device. kbd = Keyboard() # Type control-x. kbd.press(Keycode.CONTROL, Keycode.X) kbd.release_all() # Type capital 'A'. kbd.press(Keycode.SHIFT, Keycode.A) kbd.release_all() # Press and hold the shifted '1' key to get '!' (exclamation mark). kbd.press(Keycode.SHIFT, Keycode.ONE) # Release the ONE key and send another report. kbd.release(Keycode.ONE) # Press shifted '2' to get '@'. kbd.press(Keycode.TWO) # Release all keys. kbd.release_all()
KeyboardLayoutUS sends ASCII characters using keypresses. It assumes
the host is set to accept keypresses from a US keyboard.
If the host is expecting a non-US keyboard, the character to key mapping provided by
KeyboardLayoutUS will not always be correct.
Different keypresses will be needed in some cases. For instance, to type an
a French keyboard (AZERTY instead of QWERTY),
Keycode.Q should be pressed.
Currently this package provides only
classes could be added to handle non-US keyboards and the different input methods provided
by various operating systems.
from adafruit_hid.keyboard import Keyboard from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS kbd = Keyboard() layout = KeyboardLayoutUS(kbd) # Type 'abc' followed by Enter (a newline). layout.write('abc\n') # Get the keycodes needed to type a '$'. # The method will return (Keycode.SHIFT, Keycode.FOUR). keycodes = layout.keycodes('$')
Mouse class simulates a three-button mouse with a scroll wheel.
from adafruit_hid.mouse import Mouse m = Mouse() # Click the left mouse button. m.click(Mouse.LEFT_BUTTON) # Move the mouse diagonally to the upper left. m.move(-100, -100, 0) # Roll the mouse wheel away from the user one unit. # Amount scrolled depends on the host. m.move(0, 0, -1) # Keyword arguments may also be used. Omitted arguments default to 0. m.move(x=-100, y=-100) m.move(wheel=-1) # Move the mouse while holding down the left button. (click-drag). m.press(Mouse.LEFT_BUTTON) m.move(x=50, y=20) m.release_all() # or m.release(Mouse.LEFT_BUTTON)
Contributions are welcome! Please read our Code of Conduct before contributing to help this project stay welcoming.