From c482861ce6b22bf494991c2b18c363cdfd2d312f Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Tue, 4 Jul 2023 22:09:55 +0100 Subject: [PATCH 1/3] add `dactyl_maximus` board --- boards/dactyl_maximus/README.md | 27 +++++++++++++++ boards/dactyl_maximus/kb.py | 42 +++++++++++++++++++++++ boards/dactyl_maximus/main.py | 60 +++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 boards/dactyl_maximus/README.md create mode 100644 boards/dactyl_maximus/kb.py create mode 100644 boards/dactyl_maximus/main.py diff --git a/boards/dactyl_maximus/README.md b/boards/dactyl_maximus/README.md new file mode 100644 index 000000000..4ed0c9c51 --- /dev/null +++ b/boards/dactyl_maximus/README.md @@ -0,0 +1,27 @@ +# Dactyl Maximus + +![KeycapLess](https://i.imgur.com/OJs3bkWh.jpg) +*Thanks to [unit-5370](https://github.com/unit-5370) for image* + +The largest key count [Dactyl](/boards/dactyl/) variation available from a Dactyl generator; 7 columns with an 8 key thumb cluster. + +Hardware Availability: [Dactyl Generator](https://ryanis.cool/dactyl/#original) +* 'Keys' settings: + * Number of Columns: 7 + * Use Number Row: true + * Use Bottom Row: true + * Thumb Key Count: 8 + +## KMK Specifics + +Extentions enabled by default +- [Layers](/docs/en/layers.md) +- [Split](/docs/en/split_keyboards.md): Configured to 1-wire UART to match legacy configuration. Please see documentation for enabling 2-wire UART or, for capable controllers, Bluetooth + +## Microcontroller support + +Replace `kb2040` in the following line of `kb.py` to a supported microcontroller listed in `kmk/quickpin/pro_micro`: + +```python +from kmk.quickpin.pro_micro.kb2040 import pinout as pins +``` diff --git a/boards/dactyl_maximus/kb.py b/boards/dactyl_maximus/kb.py new file mode 100644 index 000000000..3ec819386 --- /dev/null +++ b/boards/dactyl_maximus/kb.py @@ -0,0 +1,42 @@ +import board + +from kmk.kmk_keyboard import KMKKeyboard as _KMKKeyboard +from kmk.quickpin.pro_micro.avr_promicro import translate as avr +from kmk.quickpin.pro_micro.kb2040 import pinout as pins +from kmk.scanners import DiodeOrientation + + +class KMKKeyboard(_KMKKeyboard): + col_pins = ( + pins[avr['D1']], + pins[avr['D4']], + pins[avr['C6']], + pins[avr['D7']], + pins[avr['E6']], + pins[avr['B4']], + pins[avr['B5']], + ) + row_pins = ( + pins[avr['F6']], + pins[avr['F7']], + pins[avr['B1']], + pins[avr['B3']], + pins[avr['B2']], + pins[avr['B6']], + ) + diode_orientation = DiodeOrientation.COLUMNS + data_pin = pins[avr['D3']] + # data_pin2 = pins[avr['D2']] + # rgb_pixel_pin = pins[avr['D0']] + # num_pixels = 12 + + # flake8: noqa + # fmt: off + coord_mapping = [ + 0, 1, 2, 3, 4, 5, 6, 41, 40, 39, 38, 37, 36, 35, + 7, 8, 9, 10, 11, 12, 13, 48, 47, 46, 45, 44, 43, 42, + 14, 15, 16, 17, 18, 19, 20, 55, 54, 53, 52, 51, 50, 49, + 21, 22, 23, 24, 25, 26, 27, 34, 41, 76, 69, 62, 61, 60, 59, 58, 57, 56, + 28, 29, 30, 31, 32, 33, 38, 39, 40, 75, 74, 73, 68, 67, 66, 65, 64, 63, + 35, 36, 37, 72, 71, 70 + ] diff --git a/boards/dactyl_maximus/main.py b/boards/dactyl_maximus/main.py new file mode 100644 index 000000000..9fca7719d --- /dev/null +++ b/boards/dactyl_maximus/main.py @@ -0,0 +1,60 @@ +from kb import KMKKeyboard + +from kmk.extensions.media_keys import MediaKeys +from kmk.keys import KC +from kmk.modules.holdtap import HoldTap +from kmk.modules.layers import Layers +from kmk.modules.split import Split + +keyboard = KMKKeyboard() + +keyboard.extensions.append(MediaKeys()) +keyboard.modules.append(Layers()) +keyboard.modules.append(HoldTap()) + +split = Split( + data_pin=keyboard.data_pin + # data_pin2=keyboard.data_pin2 +) +keyboard.modules.append(split) + +# keymap aliases +CUT = KC.LCTL(KC.X) +COPY = KC.LCTL(KC.C) +PASTE = KC.LCTL(KC.V) +REDO = KC.LCTL(KC.Y) +UNDO = KC.LCTL(KC.Z) +SALL = KC.LCTL(KC.A) +SLFT = KC.LSFT(KC.HOME) +SRGHT = KC.LSFT(KC.END) +TSKMGR = KC.LSFT(KC.LCTL(KC.ESC)) +APP_N = KC.LALT(KC.TAB) +APP_P = KC.LSFT(KC.LALT(KC.TAB)) +APP_X = KC.LALT(KC.F4) + +keyboard.keymap = [ + [ # 0 + APP_P, KC.GRV, KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0, KC.PSCR, APP_N, + SLFT, KC.ESC, KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P, KC.BSLS, SRGHT, + COPY, KC.TAB, KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.SCLN, KC.QUOT, PASTE, + CUT, KC.LSFT, KC.Z, KC.X, KC.C, KC.V, KC.B, KC.HOME, KC.PGUP, KC.VOLU, KC.END, KC.N, KC.M, KC.COMM, KC.DOT, KC.SLSH, KC.LALT, SALL, + UNDO, KC.LCTL, KC.LALT, KC.LGUI, KC.MINS, KC.EQL, KC.MO(1), KC.SPC, KC.DEL, KC.BSPC, KC.ENT, KC.MO(2), KC.UP, KC.DOWN, KC.LBRC, KC.RBRC, KC.RSFT, REDO, + KC.UP, KC.DOWN, KC.PGDN, KC.VOLD, KC.LEFT, KC.RGHT, + ], + [ # 1 + KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, + KC.TRNS, TSKMGR, APP_X, KC.SLCK, KC.INS, KC.PAUS, KC.NO, KC.NLCK, KC.P7, KC.P8, KC.P9, KC.NO, KC.NO, KC.TRNS, + KC.TRNS, KC.F1, KC.F2, KC.F3, KC.F4, KC.F5, KC.F6, KC.PAST, KC.P4, KC.P5, KC.P6, KC.PMNS, KC.NO, KC.TRNS, + KC.TRNS, KC.F7, KC.F8, KC.F9, KC.F10, KC.F11, KC.F12, KC.NO, KC.NO, KC.NO, KC.RCTL, KC.PSLS, KC.P1, KC.P2, KC.P3, KC.PPLS, KC.TRNS, KC.TRNS, + KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, KC.NO, KC.NO, KC.RSFT, KC.PENT, KC.LALT, KC.PCMM, KC.P0, KC.PDOT, KC.NO, KC.NO, KC.TRNS, + KC.NO, KC.NO, KC.NO, KC.NO, KC.RGUI, KC.NO, + ], + [ # 2 + KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, + KC.TRNS, KC.NO, KC.NO, KC.NO, KC.BRIU, KC.VOLU, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, + KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.MUTE, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, + KC.TRNS, KC.NO, KC.NO, KC.NO, KC.BRID, KC.VOLD, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, + KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.MPRV, KC.MPLY, KC.MNXT, KC.NO, KC.NO, KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, + KC.NO, KC.MSTP, KC.NO, KC.NO, KC.NO, KC.NO, + ], +] From c5e2ec06ed04f80afc7114c25a2b5c666008b39b Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Wed, 5 Jul 2023 16:08:13 +0100 Subject: [PATCH 2/3] Update main.py add zoom hotkeys --- boards/dactyl_maximus/main.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/boards/dactyl_maximus/main.py b/boards/dactyl_maximus/main.py index 9fca7719d..1e028ac1e 100644 --- a/boards/dactyl_maximus/main.py +++ b/boards/dactyl_maximus/main.py @@ -31,6 +31,9 @@ APP_N = KC.LALT(KC.TAB) APP_P = KC.LSFT(KC.LALT(KC.TAB)) APP_X = KC.LALT(KC.F4) +Z_IN = KC.LCTL(KC_MINS) +Z_OUT = KC.LCTL(KC_EQL) +Z_RST = KC.CTL(KC_N0) keyboard.keymap = [ [ # 0 @@ -42,12 +45,12 @@ KC.UP, KC.DOWN, KC.PGDN, KC.VOLD, KC.LEFT, KC.RGHT, ], [ # 1 - KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, - KC.TRNS, TSKMGR, APP_X, KC.SLCK, KC.INS, KC.PAUS, KC.NO, KC.NLCK, KC.P7, KC.P8, KC.P9, KC.NO, KC.NO, KC.TRNS, - KC.TRNS, KC.F1, KC.F2, KC.F3, KC.F4, KC.F5, KC.F6, KC.PAST, KC.P4, KC.P5, KC.P6, KC.PMNS, KC.NO, KC.TRNS, - KC.TRNS, KC.F7, KC.F8, KC.F9, KC.F10, KC.F11, KC.F12, KC.NO, KC.NO, KC.NO, KC.RCTL, KC.PSLS, KC.P1, KC.P2, KC.P3, KC.PPLS, KC.TRNS, KC.TRNS, - KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, KC.NO, KC.NO, KC.RSFT, KC.PENT, KC.LALT, KC.PCMM, KC.P0, KC.PDOT, KC.NO, KC.NO, KC.TRNS, - KC.NO, KC.NO, KC.NO, KC.NO, KC.RGUI, KC.NO, + KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, + KC.TRNS, TSKMGR, APP_X, KC.SLCK, KC.INS, KC.PAUS, KC.NO, KC.NLCK, KC.P7, KC.P8, KC.P9, KC.NO, KC.NO, KC.TRNS, + KC.TRNS, KC.F1, KC.F2, KC.F3, KC.F4, KC.F5, KC.F6, KC.PAST, KC.P4, KC.P5, KC.P6, KC.PMNS, KC.NO, KC.TRNS, + KC.TRNS, KC.F7, KC.F8, KC.F9, KC.F10, KC.F11, KC.F12, KC.NO, KC.NO, Z_OUT, KC.RCTL, KC.PSLS, KC.P1, KC.P2, KC.P3, KC.PPLS, KC.NO, KC.TRNS, + KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, KC.NO, KC.NO, KC.RSFT, KC.PENT, KC.LALT, KC.PCMM, KC.P0, KC.PDOT, KC.NO, KC.NO, KC.TRNS, + KC.NO, KC.NO, KC.NO, Z_IN, KC.RGUI, Z_RST, ], [ # 2 KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.TRNS, From 9cc78890bd3304b41c12da46e96e957043499b9f Mon Sep 17 00:00:00 2001 From: Duncan Sutherland Date: Wed, 5 Jul 2023 16:09:39 +0100 Subject: [PATCH 3/3] Update main.py --- boards/dactyl_maximus/main.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/boards/dactyl_maximus/main.py b/boards/dactyl_maximus/main.py index 1e028ac1e..959033e3f 100644 --- a/boards/dactyl_maximus/main.py +++ b/boards/dactyl_maximus/main.py @@ -31,9 +31,9 @@ APP_N = KC.LALT(KC.TAB) APP_P = KC.LSFT(KC.LALT(KC.TAB)) APP_X = KC.LALT(KC.F4) -Z_IN = KC.LCTL(KC_MINS) -Z_OUT = KC.LCTL(KC_EQL) -Z_RST = KC.CTL(KC_N0) +Z_IN = KC.LCTL(KC.MINS) +Z_OUT = KC.LCTL(KC.EQL) +Z_RST = KC.CTL(KC.N0) keyboard.keymap = [ [ # 0