• Stars
    star
    484
  • Rank 90,873 (Top 2 %)
  • Language
    Python
  • License
    MIT License
  • Created over 4 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A hand-wired USB & Bluetooth keyboard powered by Python and more

PYKB - Python Keyboard

English 中文

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 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/matrix.py.

Todo

  • add system keys
  • add mouse keys

Credits

More Repositories

1

nrf52840-mdk-usb-dongle

An open-source, small and low-cost USB Dongle that supports Bluetooth 5.4, Bluetooth mesh, Thread, Zigbee, 802.15.4, ANT and 2.4 GHz proprietary protocols
Python
306
star
2

nrf52832-mdk

An Open Source, Micro Development Kit for IoT Embedded Applications using the nRF52832 SoC
C
206
star
3

nrf52-u2f

An Open-Source FIDO U2F implementation on nRF52 SoC
C
179
star
4

nrf52840-mdk

An Open-Source, Micro Development Kit for IoT Applications using the nRF52840 SoC
C
165
star
5

nrf52840-connectkit

Rapid prototyping kit for your next connected projects supporting Bluetooth Low Energy, Bluetooth mesh, NFC, Thread, Zigbee, 802.15.4, ANT and 2.4 GHz proprietary stacks
Python
93
star
6

web-device-cli

A Web Command Line Interface via NUS (Nordic UART Service) using Web Bluetooth
JavaScript
79
star
7

pitaya-go

An Open-Source IoT Development Platform with Multiprotocol Wireless Connectivity
Batchfile
67
star
8

terminal-s

A super simple serial terminal
Python
49
star
9

Smart-Plug

An open source ZigBee plug for your own smart home
C
41
star
10

nrf52840-m2-devkit

An open-source developer kit based on a removable nRF52840 M.2 module, designed for IoT prototyping
C
28
star
11

nrf52840-m2

A removable M.2 module that enables multiprotocol connectivity, security and ease-of-use for your next embedded design
C
27
star
12

pitaya-link

An Open-Source CMSIS-DAP Debug Probe based on DAPLink
14
star
13

m60

An Open Source, USB & BLE 5.0, Modular, Hot-Swappable, 60% Mechanical Keyboard
12
star
14

power-profiler

A power profiling utility
Python
7
star
15

ncs-playground

nRF Connect SDK Playground
CMake
5
star
16

uf2utils

An open source Python based tool for packing and unpacking UF2 files.
Python
5
star
17

makerdiary.github.io

Welcom to Makerdiary Wiki
HTML
5
star
18

base-dock

Grove compatible dock for building rapidly IoT applications with nRF52832-MDK or nRF52840-MDK
C
4
star
19

OpenSK-firmware

OpenSK Firmware Releases
4
star
20

grove-mesh-kit

Build Mesh network with nRF52840-MDK and Grove
C
3
star
21

m2-dock

An essential carrier board to quickly prototype your next embedded design with a removable M.2 module
3
star
22

meshlight

Smart Lighting based on FruityMesh
C++
2
star
23

mynewt_nrf52840_mdk

Mynewt packages with board support for nRF52840-MDK.
Assembly
2
star
24

meshlight_server

A node server for MeshLight
JavaScript
1
star
25

WebBluetoothDemos

Demos for Web Bluetooth API
JavaScript
1
star