initial commit of ffkb support for KMK using the KB2040 from adafruit
This commit is contained in:
parent
9840569dc6
commit
9f23d9048e
10
boards/ffkb/README.md
Normal file
10
boards/ffkb/README.md
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Faux Fox Keyboard (ffkb)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A 36 or 42 key keyboard with support for per key leds, 2 rotary encoders (EC11 or evqwgd001), and a feature in the center (EC11, OLED (128x64), or pimoroni trackball)
|
||||||
|
|
||||||
|
kb.py is designed to work with a pro micro or kb2040
|
||||||
|
|
||||||
|
- [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
|
37
boards/ffkb/kb.py
Normal file
37
boards/ffkb/kb.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import board
|
||||||
|
|
||||||
|
from kmk.kmk_keyboard import KMKKeyboard as _KMKKeyboard
|
||||||
|
from kmk.matrix import DiodeOrientation
|
||||||
|
from kmk.matrix import intify_coordinate as ic
|
||||||
|
|
||||||
|
|
||||||
|
class KMKKeyboard(_KMKKeyboard):
|
||||||
|
col_pins = (
|
||||||
|
board.D9,
|
||||||
|
board.D8,
|
||||||
|
board.D7,
|
||||||
|
board.D6,
|
||||||
|
board.D5,
|
||||||
|
board.D4,
|
||||||
|
board.MOSI,
|
||||||
|
board.MISO,
|
||||||
|
)
|
||||||
|
row_pins = (
|
||||||
|
board.D1,
|
||||||
|
board.A3,
|
||||||
|
board.A2,
|
||||||
|
board.A1,
|
||||||
|
board.A0,
|
||||||
|
board.SCK,
|
||||||
|
)
|
||||||
|
diode_orientation = DiodeOrientation.COLUMNS
|
||||||
|
rgb_pixel_pin = board.D0
|
||||||
|
rgb_num_pixels = 42
|
||||||
|
i2c = board.I2C
|
||||||
|
|
||||||
|
coord_mapping = [
|
||||||
|
(0,0), (0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (4,3), (3,4), (4,5), (3,7),
|
||||||
|
(1,0), (1,1), (1,2), (1,3), (1,4), (1,5), (4,1), (1,6), (1,7), (3,2), (4,4), (3,5), (4,7),
|
||||||
|
(2,0), (2,1), (2,2), (2,3), (2,4), (2,5), (2,6), (2,7), (4,2), (3,3), (3,6), (4,6),
|
||||||
|
(5,1), (5,3), (5,4), (5,5), (5,6), (5,7), (5,2), (5,0)
|
||||||
|
]
|
134
boards/ffkb/main.py
Normal file
134
boards/ffkb/main.py
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
from kb import KMKKeyboard
|
||||||
|
from kmk.extensions.RGB import RGB
|
||||||
|
from kmk.keys import KC
|
||||||
|
from kmk.modules.layers import Layers
|
||||||
|
from kmk.modules.modtap import ModTap
|
||||||
|
from kmk.modules.encoder import EncoderHandler
|
||||||
|
from kmk.extensions.media_keys import MediaKeys
|
||||||
|
|
||||||
|
keyboard = KMKKeyboard()
|
||||||
|
keyboard.tap_time = 175
|
||||||
|
keyboard.debug_enabled = False
|
||||||
|
|
||||||
|
# Cleaner key names
|
||||||
|
_______ = KC.TRNS
|
||||||
|
XXXXXXX = KC.NO
|
||||||
|
|
||||||
|
# Adding extensions
|
||||||
|
rgb = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels, val_limit=50, hue_default=190, sat_default=100, val_default=5)
|
||||||
|
|
||||||
|
modtap = ModTap()
|
||||||
|
layers = Layers()
|
||||||
|
media_keys = MediaKeys()
|
||||||
|
|
||||||
|
encoder_handler = EncoderHandler()
|
||||||
|
encoder_handler.pins = ((board.D3, board.D2, board.D10, False))
|
||||||
|
|
||||||
|
keyboard.modules = [layers, modtap, encoder_handler]
|
||||||
|
keyboard.extensions = [rgb, media_keys]
|
||||||
|
|
||||||
|
ZOOM_IN = KC.LCTRL(KC.EQUAL)
|
||||||
|
ZOOM_OUT = KC.LCTRL(KC.MINUS)
|
||||||
|
|
||||||
|
LYR_BASE, LYR_NAV, LYR_SYM, LYR_SNAV, LYR_MEDIA, LYR_MOUSE = 0, 1, 2, 3, 4, 5
|
||||||
|
|
||||||
|
NAV_ENT = KC.LT(LYR_NAV, KC.ENT)
|
||||||
|
SYM_SPC = KC.LT(LYR_SYM, KC.SPC)
|
||||||
|
SNAV_TAB = KC.LT(LYR_SNAV, KC.TAB)
|
||||||
|
MEDIA_BSPC = KC.LT(LYR_MEDIA, KC.BSPC)
|
||||||
|
MOUSE_M = KC.LT(LYR_MOUSE, KC.M)
|
||||||
|
|
||||||
|
# HOMEROW MODS
|
||||||
|
LCTL_A = KC.MT(KC.A, KC.LCTRL)
|
||||||
|
LGUI_R = KC.MT(KC.R, KC.LGUI)
|
||||||
|
LALT_S = KC.MT(KC.S, KC.LALT)
|
||||||
|
LSFT_T = KC.MT(KC.T, KC.LSFT)
|
||||||
|
RCTL_N = KC.MT(KC.N, KC.RCTRL)
|
||||||
|
RGUI_E = KC.MT(KC.E, KC.RGUI)
|
||||||
|
RALT_I = KC.MT(KC.I, KC.RALT)
|
||||||
|
RSFT_O = KC.MT(KC.O, KC.RSFT)
|
||||||
|
|
||||||
|
# OTHER SHORTCUTS
|
||||||
|
BRWSR_LFT = KC.LCTRL(KC.LSFT(KC.TAB))
|
||||||
|
BRWSR_RGHT = KC.LCTRL(KC.TAB)
|
||||||
|
DESK_LEFT = KC.LCTRL(KC.LGUI(KC.LEFT))
|
||||||
|
DESK_RIGHT = KC.LCTRL(KC.LGUI(KC.RIGHT))
|
||||||
|
CAPSWORD = _______ # TODO: IMPLEMENT THIS
|
||||||
|
|
||||||
|
#SHIFT NAV
|
||||||
|
SFT_PGUP = KC.LSFT(KC.PGUP)
|
||||||
|
SFT_PGDN = KC.LSFT(KC.PGDN)
|
||||||
|
SFT_HOME = KC.LSFT(KC.HOME)
|
||||||
|
SFT_END = KC.LSFT(KC.END)
|
||||||
|
SFT_UP = KC.LSFT(KC.UP)
|
||||||
|
SFT_DOWN = KC.LSFT(KC.DOWN)
|
||||||
|
SFT_LEFT = KC.LSFT(KC.LEFT)
|
||||||
|
SFT_RGHT = KC.LSFT(KC.RIGHT)
|
||||||
|
|
||||||
|
RGB_TOG = KC.RGB_TOG
|
||||||
|
RGB_HUI = KC.RGB_HUI
|
||||||
|
RGB_HUD = KC.RGB_HUI
|
||||||
|
RGB_SAI = KC.RGB_SAI
|
||||||
|
RGB_SAD = KC.RGB_SAD
|
||||||
|
RGB_VAI = KC.RGB_VAI
|
||||||
|
RGB_VAD = KC.RGB_VAD
|
||||||
|
RGB_ANI = KC.RGB_ANI
|
||||||
|
RGB_AND = KC.RGB_AND
|
||||||
|
RGB_M_P = KC.RGB_MODE_PLAIN
|
||||||
|
RGB_M_B = KC.RGB_MODE_BREATHE
|
||||||
|
RGB_M_R = KC.RGB_MODE_RAINBOW
|
||||||
|
RGB_M_BR = KC.RGB_MODE_BREATHE_RAINBOW
|
||||||
|
RGB_M_K = KC.RGB_MODE_KNIGHT
|
||||||
|
RGB_M_S = KC.RGB_MODE_SWIRL
|
||||||
|
|
||||||
|
keyboard.keymap = [
|
||||||
|
[ #COLEMAK-DH
|
||||||
|
KC.ESC, KC.Q, KC.W, KC.F, KC.P, KC.B, KC.J, KC.L, KC.U, KC.Y, KC.SCLN, KC.BSPC,
|
||||||
|
KC.CAPS, LCTL_A, LGUI_R, LALT_S, LSFT_T, KC.G, KC.MUTE, MOUSE_M, RSFT_O, RALT_I, RGUI_E, RCTL_N, KC.QUOT,
|
||||||
|
KC.SPC, KC.Z, KC.X, KC.C, KC.D, KC.V, KC.K, KC.H, KC.COMM, KC.DOT, KC.SLSH, KC.RSFT,
|
||||||
|
KC.MUTE, KC.DEL, NAV_ENT, SNAV_TAB, MEDIA_BSPC, SYM_SPC, KC.QUOT, KC.LCTRL(KC.BSPC)
|
||||||
|
],
|
||||||
|
[ #NAVIGATION
|
||||||
|
_______, KC.ESC, KC.PGUP, KC.UP, KC.PGDN, _______, KC.ASTR, KC.N7, KC.N7, KC.N7, KC.PLUS, _______,
|
||||||
|
_______, KC.HOME, KC.LEFT, KC.DOWN, KC.RIGHT, KC.END, _______, KC.SLSH, KC.N7, KC.N7, KC.N7, KC.MINS, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, KC.EQL, KC.N7, KC.N7, KC.N7, KC.N0, _______,
|
||||||
|
_______, _______, _______, _______, KC.BKSP, KC.SPC, KC.DOT, _______,
|
||||||
|
],
|
||||||
|
[ #SYMBOLS
|
||||||
|
_______, KC.EXLM, KC.AT, KC.HASH, KC.DLR, KC.PERC, KC.CIRC, KC.AMPR, KC.ASTR, KC.UNDS, KC.EQL, _______,
|
||||||
|
_______, KC.MINS, KC.LBRC, KC.LCBR, KC.LPRN, KC.LABK, _______, KC.RABK, KC.RPRN, KC.RCBR, KC.RBRC, KC.PLUS, _______,
|
||||||
|
_______, KC.CAPS, KC.GRV, BRWSR_LFT, DESK_LEFT, CAPSWORD, _______, DESK_RIGHT, BRWSR_RGHT, _______, KC.BSLS, _______,
|
||||||
|
_______, _______, KC.ENT, KC.TAB, _______, _______, _______, _______,
|
||||||
|
],
|
||||||
|
[ #SHIFT NAVIGATION
|
||||||
|
_______, _______, SFT_PGUP, SFT_UP, SFT_PGDN, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, SFT_HOME, SFT_LEFT, SFT_DOWN, SFT_RGHT, SFT_END, _______, KC.VOLU, KC.MPLY, KC.MSTP, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, KC.MUTE, KC.VOLD, KC.MPRV, KC.MNXT, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
],
|
||||||
|
[ #MEDIA
|
||||||
|
_______, RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, RGB_HUI, RGB_SAI, RGB_VAI, RGB_ANI, _______, RGB_M_P, RGB_M_B, RGB_M_R, RGB_M_BR, RGB_M_K, _______,
|
||||||
|
_______, _______, RGB_HUD, RGB_SAD, RGB_VAD, RGB_AND, RGB_M_S, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
],
|
||||||
|
[ #MOUSE
|
||||||
|
_______, KC.RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
encoder_handler.map = [(( KC.VOLD, KC.VOLU, KC.MUTE)), # Layer 1
|
||||||
|
((ZOOM_OUT, ZOOM_IN, _______)), # Layer 2
|
||||||
|
((_______, _______, _______)), # Layer 3
|
||||||
|
((_______, _______, _______)), # Layer 4
|
||||||
|
((_______, _______, _______)), # Layer 5
|
||||||
|
((_______, _______, _______)), # Layer 6
|
||||||
|
]
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
keyboard.go()
|
Loading…
x
Reference in New Issue
Block a user