From 634d53b987e5dc767a47345b28fecf8a010f06ff Mon Sep 17 00:00:00 2001 From: Pierre Constantineau Date: Thu, 21 Oct 2021 14:29:50 -0600 Subject: [PATCH] initial PyKey60 commit for JPConstantineau's keymap --- boards/jpconstantineau/PyKey60/README.md | 15 +++++ boards/jpconstantineau/PyKey60/kb.py | 27 ++++++++ user_keymaps/jpconstantineau/pyKey60.py | 81 ++++++++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 boards/jpconstantineau/PyKey60/README.md create mode 100644 boards/jpconstantineau/PyKey60/kb.py create mode 100644 user_keymaps/jpconstantineau/pyKey60.py diff --git a/boards/jpconstantineau/PyKey60/README.md b/boards/jpconstantineau/PyKey60/README.md new file mode 100644 index 0000000..74afb65 --- /dev/null +++ b/boards/jpconstantineau/PyKey60/README.md @@ -0,0 +1,15 @@ +# JPConstantineau's PyKey60 + +![PyKey60](https://cdn.tindiemedia.com/images/resize/JYsH3WYq6GZD4xnvByhHXzwLhPo=/p/full-fit-in/2400x1600/i/556481/products/2021-09-17T19%3A53%3A16.118Z-PXL_20210917_194653430.jpg?1631883222) + +A 60% RGB Keyboard PCB with Hot Swap Sockets, running CircuitPython on a RP2040 Soldered on board. + +kb.py is designed to work with the [PyKey60 CircuitPython UF2](https://circuitpython.org/board/jpconstantineau_pykey60/) + +Retailers (USA) +[BlueMicro Store on Tindie](https://www.tindie.com/products/jpconstantineau/pykey60-rgb-keyboard-pcb-with-a-rp2040/) + +Extensions enabled by default +- [Layers](https://github.com/KMKfw/kmk_firmware/tree/master/docs/layers.md) Need more keys than switches? Use layers. +- [RGB](https://github.com/KMKfw/kmk_firmware/tree/master/docs/rgb.md) Light it up +- [MediaKeys](https://github.com/KMKfw/kmk_firmware/tree/master/docs/media_keys.md) Control volume and other media functions diff --git a/boards/jpconstantineau/PyKey60/kb.py b/boards/jpconstantineau/PyKey60/kb.py new file mode 100644 index 0000000..4945a45 --- /dev/null +++ b/boards/jpconstantineau/PyKey60/kb.py @@ -0,0 +1,27 @@ +import board + +from kmk.kmk_keyboard import KMKKeyboard as _KMKKeyboard +from kmk.matrix import DiodeOrientation + + +class KMKKeyboard(_KMKKeyboard): + col_pins = ( + board.COL1, + board.COL2, + board.COL3, + board.COL4, + board.COL5, + board.COL6, + board.COL7, + board.COL8, + board.COL9, + board.COL10, + board.COL11, + board.COL12, + board.COL13, + board.COL14, + ) + row_pins = (board.ROW1, board.ROW2, board.ROW3, board.ROW4, board.ROW5) + diode_orientation = DiodeOrientation.COL2ROW + rgb_pixel_pin = board.NEOPIXEL + rgb_num_pixels = 61 diff --git a/user_keymaps/jpconstantineau/pyKey60.py b/user_keymaps/jpconstantineau/pyKey60.py new file mode 100644 index 0000000..1124112 --- /dev/null +++ b/user_keymaps/jpconstantineau/pyKey60.py @@ -0,0 +1,81 @@ +# PyKey60 designed by jpconstantineau +# https://github.com/jpconstantineau/PyKey60 +# Requires CircuitPython 7.0.0 to support the RP2040 MCU + +from kb import KMKKeyboard +from kmk.extensions.RGB import RGB, AnimationModes +from kmk.keys import KC +from kmk.modules.layers import Layers + +keyboard = KMKKeyboard() +keyboard.modules.append(Layers()) + +rgb_ext = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels, animation_mode=AnimationModes.STATIC) +keyboard.extensions.append(rgb_ext) + +FN = KC.MO(1) +FN2 = KC.MO(2) +XXXXXXX = KC.TRNS + +keyboard.keymap = [ + # Qwerty + # ,-------------------------------------------------------------------------------------------------. + # | ESC | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bksp | + # |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + # | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | + # |------+------+------+------+------+-------------+------+------+------+------+------+------+------| + # | Caps | A | S | D | F | G | H | J | K | L | ; | ' |XXXXXX| Enter| + # |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + # | Shift| Z | X | C | V | B | N | M | , | . | / |XXXXXX|XXXXXX| Shift| + # |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + # | Ctrl | GUI | Alt |XXXXXX|XXXXXX| Space|XXXXXX|XXXXXX|XXXXXX| Alt | GUI | Fn |XXXXXX| Ctrl | + # `------------------------------------------------------------------------------------------+------' + [ + KC.GESC, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.MINS, KC.EQUAL, KC.BSPC, + KC.TAB, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.LBRC, KC.RBRC, KC.BSLASH, + FN2, KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.SCLN, KC.QUOT, XXXXXXX, KC.ENTER, + KC.LSFT, KC.Z, KC.X, KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, KC.DOT, KC.SLSH, XXXXXXX, XXXXXXX, KC.RSFT, + KC.LCTRL, KC.LGUI, KC.LALT, XXXXXXX, XXXXXXX, KC.SPC, XXXXXXX, XXXXXXX, XXXXXXX, KC.RALT, KC.RGUI, FN, XXXXXXX, KC.RCTRL + ], + # Alt + # ,-------------------------------------------------------------------------------------------------. + # | ` | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | Del | + # |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + # | | | UP | | | | | | Insrt| Home | PgUp | | | | + # |------+------+------+------+------+-------------+------+------+------+------+------+------+------| + # | | LEFT | DOWN | RIGHT| | | | | Del | End | PgDn | | | | + # |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + # | | | | | | | | MUTE | VOLD | VOLU | | | | | + # |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + # | | | | | | | | | | | App | Fn | | | + # `------------------------------------------------------------------------------------------+------' + [ + KC.GRV, KC.F1, KC.F2, KC.F3, KC.F4, KC.F5, KC.F6, KC.F7, KC.F8, KC.F9, KC.F10, KC.F11, KC.F12, KC.DEL, + XXXXXXX, XXXXXXX, KC.UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.INS, KC.HOME, KC.PGUP, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC.LEFT, KC.DOWN, KC.RIGHT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.DEL, KC.END, KC.PGDN, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.MUTE, KC.VOLD, KC.VOLU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.APP, XXXXXXX, XXXXXXX, XXXXXXX, + ], + # Arrows + # ,-------------------------------------------------------------------------------------------------. + # | | | | | | | | | | | | | | | + # |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + # | | | | | | | | | | | | | | | + # |------+------+------+------+------+-------------+------+------+------+------+------+------+------| + # | | RGB T| RGB R| | | | | | | | | | | | + # |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + # | | | | | | | | | | | | | | UP | + # |------+------+------+------+------+------+------+------+------+------+------+------+------+------| + # | | | | | | | | | | | LEFT | DOWN | | RGHT | + # `------------------------------------------------------------------------------------------+------' + [ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC.RGB_TOG, KC.RGB_MODE_RAINBOW, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.UP, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.LEFT, KC.DOWN, XXXXXXX, KC.RIGHT + ], +] + +if __name__ == '__main__': + keyboard.go()