Pico-Keyboard
kmk_firmware
Pico-Keyboard | kmk_firmware | |
---|---|---|
2 | 67 | |
77 | 1,268 | |
- | 3.1% | |
0.0 | 8.6 | |
over 1 year ago | 4 days ago | |
Python | Python | |
Creative Commons Attribution Share Alike 4.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Pico-Keyboard
-
Two months of work finally comes to fruition. The first keyboard I designed and built from scratch, powered by RP2040. Everything is open-sourced.
This is my first attempt at designing a mechanical keyboard, and my second shot at PCB design. To me this is truly a "full stack" project: from PCB to case to firmware. The reason I wrote my own firmware is that I want to learn about how to program RP2040 and it's also an excuse to write a lot of code :). In terms of timing, it took roughly one month to do all the hardware stuff, and one month to write the code. For PCB, I went through at least four iterations to get to the current design. For the case I used up almost a whole spool of PLA to finally get everything fit nicely. It turned out my 3D printer (Ender 5) was playing tricks on me. Basically the carriage is slightly off from parallel (like in this video https://www.youtube.com/watch?v=Z3NR7mJ-P0E) that completely screwed up the fitness between parts. Building the firmware is pretty fun and I learned a lot in the process. For example, I finally figured out how USB HID works. I still remember how happy I was when config menu finally worked. The trickiest part of the firmware is perhaps writing to flash, for persisting the configs. On RP2040 you can't execute any code from flash when programming it. Since I'm using both cores of RP2040, I need to make sure the other core is not running anything from flash when one core is writing to it. FreeRTOS's taskENTER_CRITICAL is not sufficient because it doesn't immediately stop the other core, and Pico SDK's lock core isn't initialized by FreeRTOS. In the end I hacked up a high priority task that sits in SRAM and a bunch of locks to immediately block the second core (see storage.cc in the firmware repo). Overall the material cost for building one keyboard is $129.57. Please see here (https://github.com/zli117/Pico-Keyboard#overall-cost-breakdown) for the breakdown (Keycap is Akko clear translucent blue, knob is GMMK pro knob, and switch is Akko blue). Anyway, this is a really fun project and I've learned a lot along the way. Here's the repo for the hardware (https://github.com/zli117/Pico-Keyboard) and the repo for the firmware (https://github.com/zli117/PicoMK).
-
Two months of work finally comes to fruition. The first keyboard I designed and built from scratch. Everything is open-sourced (hardware, firmware)
Anyway, this was a really fun project and I've learned a lot on the way. Here's the repo (https://github.com/zli117/Pico-Keyboard) for the hardware and the repo (https://github.com/zli117/PicoMK) for the firmware.
kmk_firmware
-
Has anyone tried making a raspberry pico keyboard with the kmk software
plenty.. try their zulip and you will see(https://kmkfw.zulipchat.com/).. also google may help... plenty of youtube pushers also will provide you the info...
- Bluetooth module for a keyboard, but easy-to-solder
-
CircuitPython keyboard flash
Im not really sure where the problem would be. Try to flash the example firmware from the official kmk github and see if that works for you. If it doesn't then there may be a problem with the hardware 🤔 https://github.com/KMKfw/kmk_firmware/tree/master/boards/reviung41
-
KMK split firmware procedure
You'll need to copy the following onto storage device: 1. CircuitPython files/binaries for controller, if not present 2. kmk folder from KMK firmware. github, if not present. 3. kb.py and main.py files for your board. Pre-configured boards can be found in KMK firmware github in boards directory.
-
Is there pre-compiled firmware for miryoku for piantor with weact?
I'll try to set it up locally and will otherwise contact... Got time over Easter. Thx a lot. I also have seen that piantor for KMK has an open pull request which means the board dev will soon be ready for workflow builds of Miryoku. https://github.com/KMKfw/kmk_firmware/pull/723 I like KMK a bit more as it will allow me to quickly change the extra keys to whatever makes sense .... All just with s simple text editor.
-
Need help with KMK and split keyboard
Here's a pull request to add piantor board to KMK firmware. The logic to define config for left and right halves is actually really nice.
-
KMK split with direct pin on a pi pico ?
There's a recent pull request to add the Piantor to KMK, and that's a split 42 key that uses the pico with direct pins to keys: https://github.com/KMKfw/kmk_firmware/pull/723
-
Porting to Boardsource's Peg re-mapping tool (scuffed write-up and review)
See above. I set this up some time ago; the one I am using is pretty much the demo one from the KMK github.
- Dactyl CC with MT3 keycaps
-
anyone knows a handwired split keyboard with two Xiao 2040 running kmk and connected via trrs/trs cables?
I've uploaded these files to github here if you wish to look around but I recommend also looking through the various boards in the kmk github as well for more guidance too. This was my first kmk based keyboard so my code might not be the best lol but I hope this is helpful regardless. Let me know if you have any questions!
What are some alternatives?
chrumm-keyboard - Ergonomic monoblock keyboard
qmk_firmware - Open-source keyboard firmware for Atmel AVR and Arm USB families
keyboard-tools - Tools for mechanical keyboard design
zmk - ZMK Firmware Repository
dactyl-keyboard - Parameterized ergonomic keyboard
MicroPython - MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems
Adafruit_CircuitPython_SSD1306 - Adafruit CircuitPython framebuf driver for SSD1306 or SSD1305 OLED displays. Not for use with displayio. See README.
python-keyboard - A hand-wired USB & Bluetooth keyboard powered by Python and more
MK32 - Keyboard firmware for ESP32 microcontrollers
dactyl-keyboard - Dactyl-ManuForm, a parameterized ergonomic keyboard translated into Python including a cadquery / Open CASCADE implementation.
micropython-ulab - a numpy-like fast vector module for micropython, circuitpython, and their derivatives
keybow2040-voicemeeter - My keybow2040 configuration to control VB-Audio Voicemeeter Banana