Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time

PYKB - Python Keyboard

English 中文

Create a hand-wired keyboard, run Python on it, turn it into production.

Hand-wiring a keyboard

Follow the guide - 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.

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 to make the small keyboard much more powerful. With the idea from Toward a more useful 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/


  • add system keys
  • add mouse keys