From f94734c28db4f73f33da0538a7b585b717c75216 Mon Sep 17 00:00:00 2001 From: Kyle Brown Date: Fri, 13 Nov 2020 16:10:14 -0800 Subject: [PATCH] port boards and docs --- boards/boardsource/3x4/main.py | 6 +- boards/boardsource/4x12/main.py | 13 ++-- boards/boardsource/5x12/main.py | 13 ++-- boards/boardsource/microdox/main.py | 23 +++--- boards/crkbd/main.py | 7 +- boards/ergo_travel/main.py | 25 +++---- boards/fourtypercentclub/gherkin/main.py | 16 ++-- boards/fourtypercentclub/luddite/main.py | 5 +- boards/keebio/iris/kb_converter.py | 4 +- boards/keebio/iris/main.py | 18 ++--- boards/keebio/levinson/kb_converter.py | 4 +- boards/keebio/levinson/main.py | 25 +++---- boards/keebio/nyquist/kb_converter.py | 4 +- boards/keebio/nyquist/main.py | 26 +++---- boards/klarank.py | 4 +- boards/reviung39/main.py | 21 +++--- boards/reviung41/main.py | 21 +++--- boards/rhymestone/main.py | 21 +++--- boards/tg4x/main.py | 5 +- docs/extensions.md | 21 ++---- docs/layers.md | 6 +- docs/modtap.md | 6 +- docs/modules.md | 15 ++++ docs/power.md | 10 +-- docs/split_keyboards.md | 82 +++++++-------------- kmk/modules/split.py | 10 +-- user_keymaps/dzervas/lab68.py | 4 +- user_keymaps/kdb424/luddite.py | 7 +- user_keymaps/kdb424/nyquist_r2.py | 7 +- user_keymaps/klardotsh/iris_r2.py | 6 +- user_keymaps/klardotsh/klarank_featherm4.py | 3 + user_keymaps/rk463345/levinson_r2.py | 8 +- 32 files changed, 220 insertions(+), 226 deletions(-) create mode 100644 docs/modules.md diff --git a/boards/boardsource/3x4/main.py b/boards/boardsource/3x4/main.py index 46e2f0e..f0be11f 100644 --- a/boards/boardsource/3x4/main.py +++ b/boards/boardsource/3x4/main.py @@ -1,6 +1,6 @@ from kb import KMKKeyboard -from kmk.extensions.layers import Layers from kmk.keys import KC +from kmk.modules.layers import Layers keyboard = KMKKeyboard() @@ -8,10 +8,10 @@ keyboard = KMKKeyboard() _______ = KC.TRNS XXXXXXX = KC.NO -RAISE = KC.MO(1) layers_ext = Layers() +keyboard.modules = [layers_ext] -keyboard.extensions = [layers_ext] +RAISE = KC.MO(1) keyboard.keymap = [ [ #Base diff --git a/boards/boardsource/4x12/main.py b/boards/boardsource/4x12/main.py index cb18ea4..ea7b407 100644 --- a/boards/boardsource/4x12/main.py +++ b/boards/boardsource/4x12/main.py @@ -1,10 +1,16 @@ from kb import KMKKeyboard -from kmk.extensions.layers import Layers from kmk.extensions.media_keys import MediaKeys from kmk.keys import KC +from kmk.modules.layers import Layers keyboard = KMKKeyboard() +media = MediaKeys() +layers_ext = Layers() + +keyboard.extensions = [media] +keyboard.modules = [layers_ext] + # Cleaner key names _______ = KC.TRNS XXXXXXX = KC.NO @@ -12,11 +18,6 @@ XXXXXXX = KC.NO LOWER = KC.MO(1) RAISE = KC.MO(2) -media = MediaKeys() -layers_ext = Layers() - -keyboard.extensions = [layers_ext, media] - keyboard.keymap = [ [ #QWERTY KC.TAB, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.BSPC, diff --git a/boards/boardsource/5x12/main.py b/boards/boardsource/5x12/main.py index a232cae..217985c 100644 --- a/boards/boardsource/5x12/main.py +++ b/boards/boardsource/5x12/main.py @@ -1,10 +1,16 @@ from kb import KMKKeyboard -from kmk.extensions.layers import Layers from kmk.extensions.media_keys import MediaKeys from kmk.keys import KC +from kmk.modules.layers import Layers keyboard = KMKKeyboard() +media = MediaKeys() +layers_ext = Layers() + +keyboard.modules = [layers_ext] +keyboard.extensions = [media] + # Cleaner key names _______ = KC.TRNS XXXXXXX = KC.NO @@ -12,11 +18,6 @@ XXXXXXX = KC.NO LOWER = KC.MO(1) RAISE = KC.MO(2) -media = MediaKeys() -layers_ext = Layers() - -extensions = [layers_ext, media] - keyboard.keymap = [ [ #QWERTY KC.GRV, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.BSPC, diff --git a/boards/boardsource/microdox/main.py b/boards/boardsource/microdox/main.py index 1943592..bcb94db 100644 --- a/boards/boardsource/microdox/main.py +++ b/boards/boardsource/microdox/main.py @@ -1,10 +1,19 @@ from kb import KMKKeyboard -from kmk.extensions.ble_split import BLE_Split -from kmk.extensions.layers import Layers from kmk.keys import KC +from kmk.modules.layers import Layers +from kmk.modules.split import Split, SplitSide, SplitType keyboard = KMKKeyboard() +# TODO Comment one of these on each side +split_side = SplitSide.LEFT +split_side = SplitSide.RIGHT +split = Split(split_type=SplitType.BLE, split_side=split_side) + +layers_ext = Layers() + +keyboard.modules = [layers_ext, split] + # Cleaner key names _______ = KC.TRNS XXXXXXX = KC.NO @@ -20,16 +29,6 @@ RGB_SAD = KC.RGB_SAD RGB_VAI = KC.RGB_VAI RGB_VAD = KC.RGB_VAD -# TODO Comment one of these on each side -# Left is 0, Right is 1 -split_side = 0 -split_side = 1 -split = BLE_Split(split_side=split_side) - -layers_ext = Layers() - -keyboard.extensions = [layers_ext, split] - keyboard.keymap = [ [ #QWERTY KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P,\ diff --git a/boards/crkbd/main.py b/boards/crkbd/main.py index 2417ce3..3723479 100644 --- a/boards/crkbd/main.py +++ b/boards/crkbd/main.py @@ -2,14 +2,17 @@ from kb import KMKKeyboard, rgb_pixel_pin from kmk.extensions.rgb import RGB from kmk.keys import KC from kmk.modules.layers import Layers -from kmk.modules.split import Split, SplitType +from kmk.modules.split import Split, SplitSide, SplitType keyboard = KMKKeyboard() # Adding extentions rgb = RGB(pixel_pin=rgb_pixel_pin, num_pixels=27, val_limit=100, hue_default=190, sat_default=100, val_default=5) -split = Split(split_type=SplitType.BLE) +# TODO Comment one of these on each side +split_side = SplitSide.LEFT +split_side = SplitSide.RIGHT +split = Split(split_type=SplitType.BLE, split_side=split_side) layers_ext = Layers() diff --git a/boards/ergo_travel/main.py b/boards/ergo_travel/main.py index 80ee9b9..da76a4b 100644 --- a/boards/ergo_travel/main.py +++ b/boards/ergo_travel/main.py @@ -1,11 +1,21 @@ from kb import KMKKeyboard -from kmk.extensions.ble_split import BLE_Split -from kmk.extensions.layers import Layers from kmk.extensions.media_keys import MediaKeys from kmk.keys import KC +from kmk.modules.layers import Layers +from kmk.modulessplit import Split, SplitSide, SplitType keyboard = KMKKeyboard() +# TODO Comment one of these on each side +split_side = SplitSide.LEFT +split_side = SplitSide.RIGHT +split = Split(split_type=SplitType.BLE, split_side=split_side) + +media = MediaKeys() +layers_ext = Layers() +keyboard.modules = [layers_ext, split] +keyboard.extensions = (media) + # Cleaner key names _______ = KC.TRNS XXXXXXX = KC.NO @@ -17,17 +27,6 @@ ADJUST = KC.MO(3) CALTDEL = KC.LCTL(KC.LALT(KC.DEL)) TSKMGR = KC.LCTL(KC.LSFT(KC.KC_ESC)) -# TODO Comment one of these on each side -# Left is 0, Right is 1 -split_side = 0 -split_side = 1 -split = BLE_Split(split_side=split_side) - -media = MediaKeys() -layers_ext = Layers() - -extensions = [layers_ext, media] - keyboard.keymap = [ [ #QWERTY KC.ESC, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.MINS, KC.EQL, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.BSPC,\ diff --git a/boards/fourtypercentclub/gherkin/main.py b/boards/fourtypercentclub/gherkin/main.py index 2b070fd..5245c12 100644 --- a/boards/fourtypercentclub/gherkin/main.py +++ b/boards/fourtypercentclub/gherkin/main.py @@ -1,11 +1,18 @@ from kb import KMKKeyboard -from kmk.extensions.layers import Layers from kmk.extensions.led import LED -from kmk.extensions.modtap import ModTap from kmk.keys import KC +from kmk.modules.layers import Layers +from kmk.modules.modtap import ModTap keyboard = KMKKeyboard() + +modtap = ModTap() +layers_ext = Layers() +led = LED() +keyboard.extensions = [led] +keyboard.modules = [layers_ext, modtap] + # Cleaner key names _______ = KC.TRNS XXXXXXX = KC.NO @@ -23,11 +30,6 @@ SFT_ENT = KC.SFT(KC.ENT) BL_DEC = KC.BL_DEC BL_INC = KC.BL_INC -modtap = ModTap() -layers_ext = Layers() -led = LED() -keyboard.extensions = [layers_ext, led, modtap] - keyboard.keymap = [ [ KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, diff --git a/boards/fourtypercentclub/luddite/main.py b/boards/fourtypercentclub/luddite/main.py index 822c454..7d7c4f3 100644 --- a/boards/fourtypercentclub/luddite/main.py +++ b/boards/fourtypercentclub/luddite/main.py @@ -1,8 +1,8 @@ from kb import KMKKeyboard -from kmk.extensions.layers import Layers from kmk.extensions.led import LED from kmk.extensions.rgb import RGB from kmk.keys import KC +from kmk.modules.layers import Layers keyboard = KMKKeyboard() @@ -12,7 +12,8 @@ XXXXXXX = KC.NO rgb_ext = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels) led = LED() layers_ext = Layers() -keyboard.extensions = [rgb_ext, led, layers_ext] +keyboard.extensions = [rgb_ext, led] +keyboard.modules = [layers_ext] BASE = 0 FN1 = 1 diff --git a/boards/keebio/iris/kb_converter.py b/boards/keebio/iris/kb_converter.py index d3033e5..80f5bb5 100644 --- a/boards/keebio/iris/kb_converter.py +++ b/boards/keebio/iris/kb_converter.py @@ -16,8 +16,8 @@ class KMKKeyboard(_KMKKeyboard): split_flip = True split_offsets = (6, 6, 6, 6, 6) split_type = 'UART' - uart_pin = board.SCL - extra_data_pin = board.SDA + data_pin = board.SCL + data_pin2 = board.SDA rgb_num_pixels = 12 i2c = board.I2C rgb_pixel_pin = board.TX diff --git a/boards/keebio/iris/main.py b/boards/keebio/iris/main.py index 5fcec27..ea89652 100644 --- a/boards/keebio/iris/main.py +++ b/boards/keebio/iris/main.py @@ -1,11 +1,11 @@ from kb import KMKKeyboard from kmk.consts import UnicodeMode -from kmk.extensions.ble_split import BLE_Split -from kmk.extensions.layers import Layers from kmk.extensions.rgb import RGB from kmk.handlers.sequences import compile_unicode_string_sequences as cuss from kmk.handlers.sequences import send_string from kmk.keys import KC +from kmk.modules.layers import Layers +from kmk.modules.split import Split, SplitSide, SplitType keyboard = KMKKeyboard() @@ -57,14 +57,14 @@ HELLA_TD = KC.TD( rgb_ext = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels) layers_ext = Layers() -# -# TODO Comment one of these on each side -# Left is 0, Right is 1 -split_side = 0 -split_side = 1 -split = BLE_Split(split_side=split_side) -extensions = [rgb_ext, split, layers_ext] +# TODO Comment one of these on each side +split_side = SplitSide.LEFT +split_side = SplitSide.RIGHT +split = Split(split_type=SplitType.BLE, split_side=split_side) + +keyboard.extensions = [rgb_ext] +keyboard.modules = [split, layers_ext] keyboard.keymap = [ diff --git a/boards/keebio/levinson/kb_converter.py b/boards/keebio/levinson/kb_converter.py index f769745..3c43c9f 100644 --- a/boards/keebio/levinson/kb_converter.py +++ b/boards/keebio/levinson/kb_converter.py @@ -12,7 +12,7 @@ class KMKKeyboard(_KMKKeyboard): split_type = 'UART' split_flip = True split_offsets = [6, 6, 6, 6, 6] - uart_pin = board.SCL - extra_data_pin = board.SDA + data_pin = board.SCL + data_pin2 = board.SDA rgb_pixel_pin = board.TX led_pin = board.D7 diff --git a/boards/keebio/levinson/main.py b/boards/keebio/levinson/main.py index 8ab426b..da6a790 100644 --- a/boards/keebio/levinson/main.py +++ b/boards/keebio/levinson/main.py @@ -1,11 +1,21 @@ from kb import KMKKeyboard -from kmk.extensions.ble_split import BLE_Split -from kmk.extensions.layers import Layers from kmk.extensions.rgb import RGB from kmk.keys import KC +from kmk.modules.layers import Layers +from kmk.modules.split import Split, SplitSide, SplitType keyboard = KMKKeyboard() +rgb_ext = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels) +layers_ext = Layers() +# TODO Comment one of these on each side +split_side = SplitSide.LEFT +split_side = SplitSide.RIGHT +split = Split(split_type=SplitType.BLE, split_side=split_side) + +keyboard.extensions = [rgb_ext] +keyboard.modules = [layers_ext, split] + _______ = KC.TRNS XXXXXXX = KC.NO @@ -13,17 +23,6 @@ LOWER = KC.MO(3) RAISE = KC.MO(4) ADJUST = KC.MO(5) -rgb_ext = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels) -layers_ext = Layers() -# -# TODO Comment one of these on each side -# Left is 0, Right is 1 -split_side = 0 -split_side = 1 -split = BLE_Split(split_side=split_side) - -keyboard.extensions = [rgb_ext, layers_ext, split] - keyboard.keymap = [ # Qwerty # ,-----------------------------------------------------------------------------------. diff --git a/boards/keebio/nyquist/kb_converter.py b/boards/keebio/nyquist/kb_converter.py index 11a1399..b3f90f0 100644 --- a/boards/keebio/nyquist/kb_converter.py +++ b/boards/keebio/nyquist/kb_converter.py @@ -11,7 +11,7 @@ class KMKKeyboard(_KMKKeyboard): split_type = 'UART' split_flip = True - uart_pin = board.SCL + data_pin = board.SCL rgb_num_pixels = 12 rgb_pixel_pin = board.TX - extra_data_pin = board.SDA + data_pin2 = board.SDA diff --git a/boards/keebio/nyquist/main.py b/boards/keebio/nyquist/main.py index 53693ea..6dc570e 100644 --- a/boards/keebio/nyquist/main.py +++ b/boards/keebio/nyquist/main.py @@ -1,11 +1,22 @@ from kb import KMKKeyboard -from kmk.extensions.ble_split import BLE_Split -from kmk.extensions.layers import Layers from kmk.extensions.rgb import RGB from kmk.keys import KC +from kmk.modules.layers import Layers +from kmk.modules.split import Split, SplitSide, SplitType keyboard = KMKKeyboard() +rgb_ext = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels) +layers_ext = Layers() + +# TODO Comment one of these on each side +split_side = SplitSide.LEFT +split_side = SplitSide.RIGHT +split = Split(split_type=SplitType.BLE, split_side=split_side) + +keyboard.modules = [layers_ext, split] +keyboard.extensions = [rgb_ext] + _______ = KC.TRNS XXXXXXX = KC.NO @@ -13,17 +24,6 @@ LOWER = KC.MO(3) RAISE = KC.MO(4) ADJUST = KC.MO(5) -rgb_ext = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels) -layers_ext = Layers() -# -# TODO Comment one of these on each side -# Left is 0, Right is 1 -split_side = 0 -split_side = 1 -split = BLE_Split(split_side=split_side) - -keyboard.extensions = [rgb_ext, layers_ext, split] - keyboard.keymap = [ # Qwerty # ,-----------------------------------------------------------------------------------. diff --git a/boards/klarank.py b/boards/klarank.py index 2ec6d3e..8ca7a2c 100644 --- a/boards/klarank.py +++ b/boards/klarank.py @@ -1,9 +1,9 @@ import board -from kmk.extensions.layers import Layers from kmk.kmk_keyboard import KMKKeyboard as _KMKKeyboard from kmk.matrix import DiodeOrientation from kmk.matrix import intify_coordinate as ic +from kmk.modules.layers import Layers # Implements what used to be handled by KMKKeyboard.swap_indicies for this # board, by flipping various row3 (bottom physical row) keys so their @@ -43,4 +43,4 @@ class KMKKeyboard(_KMKKeyboard): coord_mapping.extend(ic(3, r3_swap(x)) for x in range(12)) layers_ext = Layers() - extensions = [layers_ext] + modules = [layers_ext] diff --git a/boards/reviung39/main.py b/boards/reviung39/main.py index 3dc5df6..5144f81 100644 --- a/boards/reviung39/main.py +++ b/boards/reviung39/main.py @@ -1,25 +1,26 @@ from kb import KMKKeyboard -from kmk.extensions.layers import Layers -from kmk.extensions.modtap import ModTap from kmk.extensions.rgb import RGB from kmk.keys import KC +from kmk.modules.layers import Layers +from kmk.modules.modtap import ModTap keyboard = KMKKeyboard() -# Cleaner key names -_______ = KC.TRNS -XXXXXXX = KC.NO - -LOWER = KC.MO(1) -RAISE = KC.MO(2) - # Adding extentions rgb = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels, val_limit=100, hue_default=190, sat_default=100, val_default=5) modtap = ModTap() layers_ext = Layers() -keyboard.extensions = [layers_ext, modtap, rgb] +keyboard.modules = [layers_ext, modtap] +keyboard.extensions = [rgb] + +# Cleaner key names +_______ = KC.TRNS +XXXXXXX = KC.NO + +LOWER = KC.MO(1) +RAISE = KC.MO(2) keyboard.keymap = [ [ #QWERTY diff --git a/boards/reviung41/main.py b/boards/reviung41/main.py index d60bce9..db632d2 100644 --- a/boards/reviung41/main.py +++ b/boards/reviung41/main.py @@ -1,11 +1,20 @@ from kb import KMKKeyboard -from kmk.extensions.layers import Layers -from kmk.extensions.modtap import ModTap from kmk.extensions.rgb import RGB from kmk.keys import KC +from kmk.modules.layers import Layers +from kmk.modules.modtap import ModTap keyboard = KMKKeyboard() +# Adding extentions +rgb = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels, val_limit=100, hue_default=190, sat_default=100, val_default=5) + +modtap = ModTap() +layers_ext = Layers() + +keyboard.modules = [layers_ext, modtap] +keyboard.extensions = [rgb] + # Cleaner key names _______ = KC.TRNS XXXXXXX = KC.NO @@ -24,14 +33,6 @@ RGB_SAD = KC.RGB_SAD RGB_VAI = KC.RGB_VAI RGB_VAD = KC.RGB_VAD -# Adding extentions -rgb = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels, val_limit=100, hue_default=190, sat_default=100, val_default=5) - -modtap = ModTap() -layers_ext = Layers() - -keyboard.extensions = [layers_ext, modtap, rgb] - keyboard.keymap = [ [ #QWERTY KC.TAB, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.BSPC, diff --git a/boards/rhymestone/main.py b/boards/rhymestone/main.py index 1b86eba..5c4c585 100644 --- a/boards/rhymestone/main.py +++ b/boards/rhymestone/main.py @@ -1,10 +1,19 @@ from kb import KMKKeyboard -from kmk.extensions.ble_split import BLE_Split from kmk.extensions.layers import Layers +from kmk.extensions.split import Split, SplitSide, SplitType from kmk.keys import KC keyboard = KMKKeyboard() +# TODO Comment one of these on each side +split_side = SplitSide.LEFT +split_side = SplitSide.RIGHT +split = Split(split_type=SplitType.BLE, split_side=split_side) + +layers_ext = Layers() + +keyboard.extensions = [layers_ext, split] + # Cleaner key names _______ = KC.TRNS XXXXXXX = KC.NO @@ -17,16 +26,6 @@ KC_SLSF = KC.RSFT(KC.SLSH) KC_11SF = KC.LSFT(KC.F11) KC_GRSF = KC.RSFT(KC.GRV) -# TODO Comment one of these on each side -# Left is 0, Right is 1 -split_side = 0 -split_side = 1 -split = BLE_Split(split_side=split_side) - -layers_ext = Layers() - -keyboard.extensions = [layers_ext, split] - keyboard.keymap = [ [ #QWERTY KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, diff --git a/boards/tg4x/main.py b/boards/tg4x/main.py index 16561ce..4105350 100644 --- a/boards/tg4x/main.py +++ b/boards/tg4x/main.py @@ -1,7 +1,7 @@ from kb import KMKKeyboard -from kmk.extensions.layers import Layers from kmk.extensions.rgb import RGB from kmk.keys import KC +from kmk.modules.layers import Layers keyboard = KMKKeyboard() @@ -14,7 +14,8 @@ rgb = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixels, layers_ext = Layers() -keyboard.extensions = [layers_ext, rgb] +keyboard.modules = [layers_ext] +keyboard.extensions = [rgb] keyboard.keymap = [ [ #QWERTY diff --git a/docs/extensions.md b/docs/extensions.md index d497a4a..b93e4a7 100644 --- a/docs/extensions.md +++ b/docs/extensions.md @@ -1,21 +1,14 @@ # Extensions -Extensions allow more features to be added ot KMK such as RGB, power saving and -more. Extensions listed on this page are supported by default on KMK, though -it's possible to add your own! +Extensions add features that change the experience, but not the core features of +the keyboard. They are meant to be easy to add, and create your own. These live in +a sandbox to help prevent any bad code from crashing your keyboard. -## Core extensions +## Core Extensions These extensions are proveded in all builds and can be enabled. Currently offered -xtensions are +extensions are -- [BLE-Split](split_keyboards.md): Allows keyboards to be split in 2 with no wires - [International](international.md): Adds international keycodes -- [Layers](layers.md): Adds layer support (Fn key) to allow many more keys to be -put on your keyboard - [LED](led.md): Adds backlight support. This is for monocolor backlight, not RGB - [MediaKeys](media_keys.md): Adds support for media keys such as volume -- [ModTap](modtap.md): Adds support for augmented modifier keys to act as one key -when tapped, and modifier when held. -- [Power](power.md): Power saving features. This is mostly useful when on battery power. -- [RGB](rgb.md): RGB lighting for underglow. Will work on most matrix RGB as well -treated the same as underglow. -- [Split](split_keyboards.md): This is for wired splits. Only use wired or wireless, not both. +- [RGB](rgb.md): RGB lighting for underglow. Will work on most matrix RGB as will +be treated the same as underglow. diff --git a/docs/layers.md b/docs/layers.md index 4adde99..b34fb9c 100644 --- a/docs/layers.md +++ b/docs/layers.md @@ -1,10 +1,10 @@ # Layers -Layers extention adds keys for accessing other layers. It can simply be added to +Layers module adds keys for accessing other layers. It can simply be added to the extentions list. ```python -from kmk.extensions.layers import Layers -keyboard.extensions.append(Layers()) +from kmk.modules.layers import Layers +keyboard.modules.append(Layers()) ``` ## Keycodes diff --git a/docs/modtap.md b/docs/modtap.md index 9eb406a..39d5dee 100644 --- a/docs/modtap.md +++ b/docs/modtap.md @@ -1,10 +1,10 @@ # ModTap Keycodes Enabling ModTap will give you access to the following keycodes and can simply be -added to the extentions list. +added to the modules list. ```python -from kmk.extensions.modtap import ModTap -keyboard.extensions.append(ModTap()) +from kmk.modules.modtap import ModTap +keyboard.modules.append(ModTap()) ``` ## Keycodes diff --git a/docs/modules.md b/docs/modules.md new file mode 100644 index 0000000..4a8e02b --- /dev/null +++ b/docs/modules.md @@ -0,0 +1,15 @@ +# Modules +Modules, unlike extensions, change how your keyboard works. These are meant to have +the ability to alter the core code in any way. Unlike extensions, these are not in a +sandbox, and can make massive changes to normal operation. + +## Core Modules +These modules are proveded in all builds and can be enabled. Currently offered +modules are + +- [Layers](layers.md): Adds layer support (Fn key) to allow many more keys to be +put on your keyboard +- [ModTap](modtap.md): Adds support for augmented modifier keys to act as one key +when tapped, and modifier when held. +- [Power](power.md): Power saving features. This is mostly useful when on battery power. +- [Split](split_keyboards.md): Keyboards split in two. Seems ergonomic! diff --git a/docs/power.md b/docs/power.md index b04dbae..9df0e05 100644 --- a/docs/power.md +++ b/docs/power.md @@ -1,5 +1,5 @@ # Power(save) -This extention allows you to save power and is targeted to bluetooth/battery +This module allows you to save power and is targeted to bluetooth/battery based keyboards. ## Keycodes @@ -12,11 +12,11 @@ based keyboards. # Enabling the extention To turn on basic power saving, this is all that is required. ```python -from kmk.extensions.power import Power +from kmk.modules.power import Power power = Power() -keyboard.extensions.append(power) +keyboard.modules.append(power) ``` @@ -26,14 +26,14 @@ power if OLEDS or RGBs are installed. These drain power even when off, so this will prevent them from doing so. ```python -from kmk.extensions.power import Power +from kmk.modules.power import Power # Your kb.py may already have this set. If not, add it like this # import board # keyboard.powersave_pin = board.P0_13 power = Power(powersave_pin=keyboard.powersave_pin) -keyboard.extensions.append(power) +keyboard.modules.append(power) ``` diff --git a/docs/split_keyboards.md b/docs/split_keyboards.md index a27a341..cfa42b8 100644 --- a/docs/split_keyboards.md +++ b/docs/split_keyboards.md @@ -6,60 +6,48 @@ Split keyboards are mostly the same as unsplit. Wired UART and Bluetooth are sup Wired connections can use UART over 1 or 2 wires. With 2 wires, you will be able to syncronize the halves allowing additional features in some extentions. ```python -import board -from kmk.extensions.split import Split - -uart_pin = board.SOMETHING -split = Split(uart_pin=uart_pin) -keyboard.extensions.append(split) -``` - -### Config -Useful config options: -```python - split = Split( - is_target=True, # If this is the side connecting to the computer - extra_data_pin=None, # Second uart pin to allow 2 way communication - split_offset=None, # Default is column pins but allows an override - split_flip=True, # If both halves are the same, but flipped, set this True - split_side=None, # Sets if this is to 0 if left, 1 if right, or use EE hands - split_type=SplitType.UART, # Defaults to UART - target_left=True, # Assumes that left will be the one on USB. Set to folse if it will be the right - uart_flip=True, # Reverses the RX and TX pins if both are provided - uart_pin=None, # The primary uart pin to talk to the secondary device with - uart_timeout=20, # Rarely needed to change, but is avaliable - ) +from kb import data_pin +:from kmk.modules.split import Split, SplitType +split = Split(split_type=Split.UART, data_pin=data_pin, split_side=SplitSide.LEFT) +keyboard.modules.append(split) ``` ## Bluetooth split (aka no TRRS) Wireless splits are fully featured with 2 way communication allowing all extentions to work 100%. ```python -split_side = 0 # Left -OR -split_side = 1 # Right -split = BLE_Split(split_side=split_side) +from kb import data_pin +from kmk.modules.split import Split, SplitType, Split_Side -keyboard.extensions.append(split) + +split = Split(split_type=Split.BLE, split_side=SplitSide.LEFT) +OR +split = Split(split_type=Split.BLE, split_side=SplitSide.LEFT) +keyboard.modules.append(split) ``` ### Config Useful config options: ```python - split = BLE_Split( - split_side=split_side, # See EE hands below - uart_interval=30, # Sets the uarts delay. Lower numbers draw more power - hid_type=HIDModes.BLE, # If using USB to connect to a computer, change this appropriately. - ) +split = Split( + split_flip=True, # If both halves are the same, but flipped, set this True + split_side=None, # Sets if this is to SplitSide.LEFT or SplitSide.RIGHT, or use EE hands + split_type=SplitType.UART, # Defaults to UART + split_target_left=True, # If you want the right to be the target, change this to false + uart_interval=20, # Sets the uarts delay. Lower numbers draw more power + data_pin=None, # The primary data pin to talk to the secondary device with + data_pin2=None, # Second uart pin to allow 2 way communication + target_left=True, # Assumes that left will be the one on USB. Set to folse if it will be the right + uart_flip=True, # Reverses the RX and TX pins if both are provided +) ``` ### EE HANDS If you want to plug USB in on either side, or are using bluetooth, this is for -you. Pick one of the 2 options but not both. +you. -## Renaming CIRCUITPY Drive -The easiest way is to rename your CIRCUITPY drive to something. The left side must +Rename your CIRCUITPY drive to something different. The left side must end in L, the right must is in R. The name must be 11 characters or less! This is a limitation of the filesystem. You will receive an error if you choose a name longer than 11 characters. Instructions on how to do that are @@ -68,24 +56,6 @@ For example on NYQUISTL for left and NYQUISTR for the right. For wired connections you are done. For bluetooth, remove the `split_side` like this ```python -split = BLE_Split() - -keyboard.extensions.append(split) +split = Split(split_type=Split.UART, data_pin=data_pin) +split = Split(split_type=Split.BLE) ``` - - -## Adding an extra file -If you have changed the name of the drive as stated above, do not follow this section. -On each half of your keyboard make a file called kmk_side.py and add one of these lines to the file -depending on where each piece is physically located. -```python -split_side = 0 # Left -OR -split_side = 1 # Right -``` - -and then in your keymap, add the line -```python -from kmk_side import split_side -``` - diff --git a/kmk/modules/split.py b/kmk/modules/split.py index 5bb85c9..c731661 100644 --- a/kmk/modules/split.py +++ b/kmk/modules/split.py @@ -28,10 +28,9 @@ class Split(Module): self, split_flip=True, split_side=None, - split_type=SplitType.BLE, + split_type=SplitType.UART, split_target_left=True, uart_interval=20, - hid_type=HIDModes.BLE, data_pin=None, data_pin2=None, target_left=True, @@ -39,7 +38,6 @@ class Split(Module): ): self._is_target = True self._uart_buffer = [] - self.hid_type = hid_type self.split_flip = split_flip self.split_side = split_side self.split_type = split_type @@ -138,7 +136,7 @@ class Split(Module): def before_matrix_scan(self, keyboard): if self.split_type == SplitType.BLE: - self._check_all_connections() + self._check_all_connections(keyboard._hid_helper) self._receive_ble(keyboard) elif self.split_type == SplitType.UART: if self._is_target or self.data_pin2: @@ -176,10 +174,10 @@ class Split(Module): self._uart_connection.connection_interval = 11.25 self._psave_enable = False - def _check_all_connections(self): + def _check_all_connections(self, hid_type): '''Validates the correct number of BLE connections''' self._connection_count = len(self._ble.connections) - if self._is_target and self._connection_count < 2: + if self._is_target and hid_type == HIDModes.BLE and self._connection_count < 2: self._target_advertise() elif not self._is_target and self._connection_count < 1: self._initiator_scan() diff --git a/user_keymaps/dzervas/lab68.py b/user_keymaps/dzervas/lab68.py index 636fcd1..537e5d3 100644 --- a/user_keymaps/dzervas/lab68.py +++ b/user_keymaps/dzervas/lab68.py @@ -3,11 +3,11 @@ import busio from digitalio import DigitalInOut, Direction, Pull from adafruit_mcp230xx.mcp23017 import MCP23017 -from kmk.extensions.layers import Layers from kmk.hid import HIDModes from kmk.keys import KC from kmk.kmk_keyboard import KMKKeyboard from kmk.matrix import DiodeOrientation +from kmk.modules.layers import Layers # DEBUG_ENABLE = True @@ -15,7 +15,7 @@ i2c = busio.I2C(scl=board.SCL, sda=board.SDA, frequency=100000) mcp = MCP23017(i2c, address=0x20) keyboard = KMKKeyboard() layer_ext = Layers -keyboard.extensions = [layer_ext] +keyboard.modules = [layer_ext] _______ = KC.TRNS XXXXXXX = KC.NO diff --git a/user_keymaps/kdb424/luddite.py b/user_keymaps/kdb424/luddite.py index 31d2ba9..5704d7a 100644 --- a/user_keymaps/kdb424/luddite.py +++ b/user_keymaps/kdb424/luddite.py @@ -1,8 +1,8 @@ from kb import KMKKeyboard -from kmk.extensions.layers import Layers -from kmk.extensions.modtap import ModTap from kmk.extensions.rgb import RGB from kmk.keys import KC +from kmk.modules.layers import Layers +from kmk.modules.modtap import ModTap keyboard = KMKKeyboard() @@ -23,7 +23,8 @@ rgb_ext = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=keyboard.rgb_num_pixe layers_ext = Layers() modtap = ModTap() -keyboard.extensions = [rgb_ext, layers_ext, modtap] +keyboard.modules = [layers_ext, modtap] +keyboard.extensions = [rgb_ext] _______ = KC.TRNS XXXXXXX = KC.NO diff --git a/user_keymaps/kdb424/nyquist_r2.py b/user_keymaps/kdb424/nyquist_r2.py index 06200fe..dde3d5d 100644 --- a/user_keymaps/kdb424/nyquist_r2.py +++ b/user_keymaps/kdb424/nyquist_r2.py @@ -1,11 +1,11 @@ import board from kb import KMKKeyboard -from kmk.extensions.layers import Layers -from kmk.extensions.modtap import ModTap from kmk.extensions.rgb import RGB from kmk.handlers.sequences import send_string, simple_key_sequence from kmk.keys import KC +from kmk.modules.layers import Layers +from kmk.modules.modtap import ModTap keyboard = KMKKeyboard() @@ -16,7 +16,8 @@ layers = Layers() modtap = ModTap() rgb_ext = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=27, val_limit=100, hue_default=190, sat_default=100, val_default=5) -keyboard.extensions = [modtap, layers, rgb_ext] +keyboard.modules = [modtap, layers] +keyboard.extensions = [rgb_ext] _______ = KC.TRNS XXXXXXX = KC.NO diff --git a/user_keymaps/klardotsh/iris_r2.py b/user_keymaps/klardotsh/iris_r2.py index de905eb..494f2f6 100644 --- a/user_keymaps/klardotsh/iris_r2.py +++ b/user_keymaps/klardotsh/iris_r2.py @@ -1,12 +1,15 @@ from kb import KMKKeyboard from kmk.consts import UnicodeMode -from kmk.extensions.layers import Layers from kmk.handlers.sequences import compile_unicode_string_sequences as cuss from kmk.handlers.sequences import send_string from kmk.keys import KC +from kmk.modules.layers import Layers +from kmk.modules.split import Split, SplitType keyboard = KMKKeyboard() layers_ext = Layers() +split = Split(split_type=SplitType.UART) +keyboard.modules = [layers_ext, split] keyboard.debug_enabled = False keyboard.unicode_mode = UnicodeMode.LINUX @@ -54,7 +57,6 @@ HELLA_TD = KC.TD( KC.TG(1), ) -keyboard.extentions = [layers_ext] keyboard.keymap = [ [ diff --git a/user_keymaps/klardotsh/klarank_featherm4.py b/user_keymaps/klardotsh/klarank_featherm4.py index a371ce4..0a7be96 100644 --- a/user_keymaps/klardotsh/klarank_featherm4.py +++ b/user_keymaps/klardotsh/klarank_featherm4.py @@ -3,8 +3,11 @@ from kmk.consts import UnicodeMode from kmk.handlers.sequences import compile_unicode_string_sequences as cuss from kmk.handlers.sequences import send_string from kmk.keys import KC, make_key +from kmk.modules.layers import Layers keyboard = KMKKeyboard() +layers_ext = Layers() +keyboard.modules = [layers_ext] keyboard.debug_enabled = False keyboard.unicode_mode = UnicodeMode.LINUX diff --git a/user_keymaps/rk463345/levinson_r2.py b/user_keymaps/rk463345/levinson_r2.py index 4e1a2c6..c807f9f 100755 --- a/user_keymaps/rk463345/levinson_r2.py +++ b/user_keymaps/rk463345/levinson_r2.py @@ -1,15 +1,19 @@ from kb import KMKKeyboard from kmk.consts import UnicodeMode -from kmk.extensions.layers import Layers -from kmk.extensions.media_keys import MediaKeys from kmk.extensions.rgb import RGB from kmk.handlers.sequences import compile_unicode_string_sequences from kmk.keys import KC +from kmk.modules.layers import Layers +from kmk.modules.media_keys import MediaKeys +from kmk.modules.split import Split, SplitType keyboard = KMKKeyboard() layers = Layers() media_keys = MediaKeys() +split = Split(split_type=SplitType.UART) rgb_ext = RGB(pixel_pin=keyboard.rgb_pixel_pin, num_pixels=16, val_limit=150, hue_default=0, sat_default=100, val_default=20) +keyboard.modules = [layers, media_keys, split] +keyboard.extensions = [rgb_ext] # ------------------User level config variables ---------------------------------------