|
30 | 30 |
|
31 | 31 | #include "shared-bindings/usb_host/__init__.h"
|
32 | 32 | #include "shared-bindings/usb_host/Port.h"
|
| 33 | +#include "supervisor/usb.h" |
33 | 34 |
|
34 | 35 | //| """USB Host
|
35 | 36 | //|
|
36 | 37 | //| The `usb_host` module allows you to manage USB host ports. To communicate
|
37 | 38 | //| with devices use the `usb` module that is a subset of PyUSB's API.
|
38 | 39 | //| """
|
| 40 | +//| |
| 41 | +//| def set_user_keymap(keymap: ReadableBuffer, /) -> None: |
| 42 | +//| """Set the keymap used by a USB HID keyboard in kernel mode |
| 43 | +//| |
| 44 | +//| The keymap consists of 256 or 384 1-byte entries that map from USB keycodes |
| 45 | +//| to ASCII codes. The first 128 entries are for unmodified keys, |
| 46 | +//| the next 128 entries are for shifted keys,and the next optional 128 entries are |
| 47 | +//| for altgr-modified keys. |
| 48 | +//| |
| 49 | +//| The values must all be ASCII (32 through 126 inclusive); other values are not valid. |
| 50 | +//| |
| 51 | +//| The values at index 0, 128, and 256 (if the keymap has 384 entries) must be |
| 52 | +//| 0; other values are reserved for future expansion to indicate alternate |
| 53 | +//| keymap formats. |
| 54 | +//| |
| 55 | +//| At other indices, the value 0 is used to indicate that the normal |
| 56 | +//| definition is still used. For instance, the entry for HID_KEY_ARROW_UP |
| 57 | +//| (0x52) is usually 0 so that the default behavior of sending an escape code |
| 58 | +//| is preserved. |
| 59 | +//| |
| 60 | +//| This function is a CircuitPython extension not present in PyUSB |
| 61 | +//| """ |
| 62 | +//| |
| 63 | +STATIC mp_obj_t usb_set_user_keymap(mp_obj_t buf_in) { |
| 64 | + mp_buffer_info_t bufinfo; |
| 65 | + mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ); |
| 66 | + usb_keymap_set(bufinfo.buf, bufinfo.len); |
| 67 | + return mp_const_none; |
| 68 | +} |
| 69 | + |
| 70 | +MP_DEFINE_CONST_FUN_OBJ_1(usb_set_user_keymap_obj, usb_set_user_keymap); |
39 | 71 |
|
40 | 72 | STATIC mp_map_elem_t usb_host_module_globals_table[] = {
|
41 | 73 | { MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_usb_host) },
|
42 | 74 | { MP_ROM_QSTR(MP_QSTR_Port), MP_OBJ_FROM_PTR(&usb_host_port_type) },
|
| 75 | + { MP_ROM_QSTR(MP_QSTR_set_user_keymap), MP_OBJ_FROM_PTR(&usb_set_user_keymap_obj) }, |
43 | 76 | };
|
44 | 77 |
|
45 | 78 | STATIC MP_DEFINE_CONST_DICT(usb_host_module_globals, usb_host_module_globals_table);
|
|
0 commit comments