**Python Keyboard** **От самодельной USB-клавиатуры до разработки клавиатуры на Python** *Китайский | Английский* В статье рассказывается о создании клавиатуры, работающей на Python. ## Самодельная клавиатура Если вы хотите лучше понять, как устроена клавиатура, то лучший способ — сделать её самостоятельно. В этом вам может помочь инструкция из репозитория [hand-wiring-a-keyboard.md](hand-wiring-a-keyboard.md). ## От прототипа к продукту Самодельная клавиатура получила много положительных отзывов. Многим она понравилась, но некоторые задавались вопросом, почему используется именно Python. Автор статьи начал создавать клавиатуру просто ради интереса, а затем, вложив больше времени и усилий в её совершенствование и изучение, стал считать, что Python может дать клавиатуре уникальный и необычный опыт. Создание самодельной клавиатуры может быть сложным процессом, поэтому было решено разработать новую клавиатуру с использованием Python, чтобы больше людей могли оценить сочетание клавиатуры и Python. Клавиатура на Python — это не только клавиатура, но и USB-накопитель. Код Python хранится на накопителе, и его можно редактировать с помощью любого текстового редактора без необходимости настройки среды разработки. Настройка раскладки клавиатуры (keymap), добавление макросов или реализация новых функций становятся очень простыми — достаточно изменить файл Python на накопителе и сохранить его. Изменения вступят в силу немедленно. Для получения более подробной информации см. [M60 keyboard](https://python-keyboard.gitee.io/). ## Дальнейшее развитие — повышение производительности клавиатуры Это 60% клавиатура, в которой отсутствуют клавиши F1–F12, клавиши направления и другие клавиши. Однако, используя многоуровневые переключения и комбинированные клавиши из TMK (https://github.com/tmk/tmk_keyboard/blob/master/tmk_core/doc/keymap.md) и концепцию использования пальцев в основном на клавишах A, S, D, F и J, K, L и ;, мы можем сделать эту маленькую клавиатуру более эффективной. Здесь представлена функция Tap-key, которая позволяет использовать короткие и длинные нажатия для различных целей. Короткое нажатие используется как обычная клавиша, а длительное удержание клавиши D без отпускания активирует функцию перемещения курсора. Клавиши H, J, K и L используются как клавиши направления, а U и N — как PgUp и PgDn. ### Клавиша D для навигации Клавиша D используется в качестве Tap-key. При коротком нажатии выводится буква d, при длительном удержании клавиши D активируется функция перемещения курсора, а клавиши H, J, K и L становятся клавишами направления. Клавиши U и N используются как PgUp и PgDn соответственно. + d + h = ← + d + j = ↓ + d + k = ↑ + d + l = → + d + u = PgUp + d + n = PgDn ### Точка с запятой используется вместо Ctrl Точка с запятой также используется в качестве Tap-key: при коротком нажатии выводится символ ;, при долгом удержании — Ctrl. В VS Code при наборе текста двумя руками использование точки с запятой в сочетании с другими клавишами удобнее, чем использование левой рукой Ctrl. Стоит отметить, что в VS Code, когда текст не выделен, Ctrl + C копирует строку, на которой находится курсор, а Ctrl + V вставляет скопированную строку ниже текущей строки. Используя комбинацию клавиш D и H, J, K или L, можно легко перемещать курсор. А в браузере можно использовать точку с запятой в комбинации с Tab для переключения между вкладками, точку с запятой и T для открытия новой вкладки, а также точку с запятой и W для закрытия вкладки. ### Парные клавиши (Pair-Keys) Кроме того, клавиатура поддерживает одновременное (или в течение 10 мс) нажатие двух клавиш для активации специальных функций, которые называются парными клавишами (pair-keys). ## Задачи - [x] Мышь - [x] RGB-подсветка - [ ] Тепловая карта - [ ] Сделать USB-накопитель доступным только для чтения или скрыть его ## Благодарности Автор благодарит MicroPython (https://github.com/micropython/micropython), CircuitPython (https://github.com/adafruit/circuitpython) и проекты TMK (https://github.com/tmk/tmk_keyboard) и Toward a more useful keyboard (https://github.com/jasonrudolph/keyboard).