https://github.com/makerdiary/python-keyboard
A hand-wired USB & Bluetooth keyboard powered by Python and more
https://github.com/makerdiary/python-keyboard
bluetooth circuitpython keyboard mechanical-keyboard python usb-keyboard
Last synced: 3 months ago
JSON representation
A hand-wired USB & Bluetooth keyboard powered by Python and more
- Host: GitHub
- URL: https://github.com/makerdiary/python-keyboard
- Owner: makerdiary
- License: mit
- Created: 2020-05-02T03:44:37.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2021-03-09T07:09:06.000Z (over 4 years ago)
- Last Synced: 2025-03-29T12:08:00.326Z (3 months ago)
- Topics: bluetooth, circuitpython, keyboard, mechanical-keyboard, python, usb-keyboard
- Language: Python
- Homepage: https://makerdiary.com/m60
- Size: 41.1 MB
- Stars: 494
- Watchers: 18
- Forks: 62
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
PYKB - Python Keyboard
======================English | [中文][1]
---------|----------Create a hand-wired keyboard, run Python on it, turn it into production.

## Hand-wiring a keyboard
Follow [the guide - hand-wiring-a-keyboard.md](hand-wiring-a-keyboard.md) to rapidly make a keyboard with 100 lines of Python code.
## From prototype to production in progress
With putting more time into the Python keyboard, we find it more and more interesting. We think a Python keyboard can make a big difference, so we decide to design a new keyboard for everyone. Check out [the M60 mechanical keyboard](https://makerdiary.com/m60).[](https://makerdiary.com/m60)
## To be a productive keyboard
As the 60% keyboard lacks a lot of keys (F1~F12, arrow keys and etc). We can use
[features like TMK's layers and composite keys](https://github.com/tmk/tmk_keyboard/blob/master/tmk_core/doc/keymap.md) to make the small keyboard much more powerful.
With the idea from [Toward a more useful keyboard](https://github.com/jasonrudolph/keyboard) to keep our fingers at the home row, we can optimize the keyboard to make us more productive.Adding the Tap-key feature, which is holding a key down to activate an alternate function, can make a big difference.
### Using D for Navigation
Taping d outputs d (press & release quickly), holding d down activates navigation functions.

+ d + h as ←
+ d + j as ↓
+ d + k as ↑
+ d + l as →
+ d + u as PageUp
+ d + n as PageDown### Using ; as Ctrl
Use ; as a MODS_TAP key, taping ; outputs ;, holding ; down outputs Ctrl.
### Using Pair-keys
Simultaneously pressing two keys (interval less than 10ms) activates an alternate function.### Optimizing with C modulesin progress
A C module `matrix` of keyboard matrix is written to reduce latency and power consumption. The module has the same function as [`keyboard/matrix.py`](keyboard/matrix.py).
## Todo
- [ ] add system keys
- [ ] add mouse keys## Credits
+ [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)[1]: https://gitee.com/makerdiary/python-keyboard