From 70db4ae84d3a1168eac633393f6be4c83efe7b5d Mon Sep 17 00:00:00 2001 From: Kyle Brown Date: Wed, 10 Oct 2018 20:46:59 -0700 Subject: [PATCH] Add new keyboard now on Circuitpython. --- .../kdb424/handwire_planck_featherm4.py | 88 ++++++++++++++ .../kdb424/handwire_planck_pyboard.py | 107 ++++++------------ util/bootloader.py | 9 +- util/reset.py | 8 +- 4 files changed, 137 insertions(+), 75 deletions(-) create mode 100644 user_keymaps/kdb424/handwire_planck_featherm4.py diff --git a/user_keymaps/kdb424/handwire_planck_featherm4.py b/user_keymaps/kdb424/handwire_planck_featherm4.py new file mode 100644 index 0000000..187bdcb --- /dev/null +++ b/user_keymaps/kdb424/handwire_planck_featherm4.py @@ -0,0 +1,88 @@ +from kmk.common.consts import DiodeOrientation, UnicodeModes +from kmk.common.keycodes import KC +from kmk.common.macros.simple import send_string +from kmk.common.macros.unicode import unicode_string_sequence +from kmk.common.pins import Pin as P +from kmk.common.types import AttrDict +from kmk.entrypoints.handwire.feather_m4_express import main + +cols = (P.A0, P.A1, P.A2, P.A3, P.A4, P.A5, P.SCK, P.MOSI, P.MISO, P.RX, P.TX, P.D4) +rows = (P.D10, P.D11, P.D12, P.D13) + +diode_orientation = DiodeOrientation.COLUMNS + + +# ------------------User level config variables --------------------------------------- +unicode_mode = UnicodeModes.LINUX +tap_time = 200 +leader_timeout = 2000 +DEBUG_ENABLE = True + +emoticons = AttrDict({ + # Emoticons, but fancier + 'ANGRY_TABLE_FLIP': r'(ノಠ痊ಠ)ノ彡┻━┻', + 'CHEER': r'+。:.゚ヽ(´∀。)ノ゚.:。+゚゚+。:.゚ヽ(*´∀)ノ゚.:。+゚', + 'TABLE_FLIP': r'(╯°□°)╯︵ ┻━┻', + 'WAT': r'⊙.☉', + 'FF': r'凸(゚Д゚#)', + 'F': r'( ̄^ ̄)凸', + 'MEH': r'╮( ̄_ ̄)╭', + 'YAY': r'o(^▽^)o', +}) + +for k, v in emoticons.items(): + emoticons[k] = unicode_string_sequence(v) + +# ---------------------- Leader Key Macros -------------------------------------------- + +LEADER_DICTIONARY = { + (KC.F, KC.L, KC.I, KC.P): emoticons.ANGRY_TABLE_FLIP, + (KC.C, KC.H, KC.E, KC.E, KC.R): emoticons.CHEER, + (KC.W, KC.A, KC.T): emoticons.WAT, + (KC.F, KC.F): emoticons.FF, + (KC.F,): emoticons.F, + (KC.M, KC.E, KC.H): emoticons.MEH, + (KC.Y, KC.A, KC.Y): emoticons.YAY, +} + +WPM = send_string("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Bibendum arcu vitae elementum curabitur vitae nunc sed. Facilisis sed odio morbi quis.") + +# ---------------------- Keymap --------------------------------------------------------- + +keymap = [ + [ + # Default + [KC.GESC, KC.QUOTE, KC.COMMA, KC.DOT, KC.P, KC.Y, KC.F, KC.G, KC.C, KC.R, KC.L, KC.BKSP], + [KC.TAB, KC.A, KC.O, KC.E, KC.U, KC.I, KC.D, KC.H, KC.T, KC.N, KC.S, KC.ENT], + [KC.LSFT, KC.SCLN, KC.Q, KC.J, KC.K, KC.X, KC.B, KC.M, KC.W, KC.V, KC.Z, KC.SLSH], + [KC.LCTRL, KC.LGUI, KC.LALT, KC.LEAD, KC.MO(2), KC.LT(3, KC.SPC), KC.LT(3, KC.SPC), KC.MO(4), KC.LEFT, KC.DOWN, KC.UP, KC.RIGHT], + ], + [ + # Gaming + [KC.TAB, KC.QUOT, KC.COMM, KC.DOT, KC.P, KC.Y, KC.F, KC.G, KC.C, KC.R, KC.L, KC.BKSP], + [KC.ESC, KC.A, KC.O, KC.E, KC.U, KC.I, KC.D, KC.H, KC.T, KC.N, KC.S, KC.ENT], + [KC.LSFT, KC.SCLN, KC.Q, KC.J, KC.K, KC.X, KC.B, KC.M, KC.W, KC.V, KC.Z, KC.SLSH], + [KC.LCTRL, KC.LGUI, KC.LALT, KC.F1, KC.F2, KC.SPC, KC.SPC, KC.MO(4), KC.LEFT, KC.DOWN, KC.UP, KC.RIGHT], + ], + [ + # Raise1 + [KC.TILD, KC.EXLM, KC.AT, KC.HASH, KC.DLR, KC.PERC, KC.CIRC, KC.AMPR, KC.ASTR, KC.LPRN, KC.RPRN, KC.DEL], + [KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.LBRC, KC.RBRC, KC.BSLS], + [KC.TRNS, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.NO, KC.INS, KC.PGDN, KC.PGUP, KC.MINS], + [KC.RESET, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.NO, KC.NO, KC.EQL, KC.HOME, KC.VOLD, KC.VOLU, KC.END], + ], + [ + # Raise2 + [KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.N7, KC.N8, KC.N9, KC.BKSP], + [KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.N4, KC.N5, KC.N6, KC.NO], + [KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.N1, KC.N2, KC.N3, KC.NO], + [KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.N0, KC.N0, KC.PDOT, KC.ENT], + ], + [ + # Raise3 + [WPM, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F10, KC.F11, KC.F12, KC.LSHIFT(KC.INS)], + [KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F7, KC.F8, KC.F9, KC.NO], + [KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F4, KC.F5, KC.F6, KC.NO], + [KC.DF(0), KC.DF(1), KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F1, KC.F2, KC.F3, KC.NO], + ], +] diff --git a/user_keymaps/kdb424/handwire_planck_pyboard.py b/user_keymaps/kdb424/handwire_planck_pyboard.py index c49cef1..6204e85 100644 --- a/user_keymaps/kdb424/handwire_planck_pyboard.py +++ b/user_keymaps/kdb424/handwire_planck_pyboard.py @@ -1,7 +1,11 @@ -from kmk.common.consts import DiodeOrientation, LeaderMode, UnicodeModes +import gc + +from kmk.common.consts import DiodeOrientation, UnicodeModes from kmk.common.keycodes import KC -from kmk.common.macros.unicode import unicode_codepoint_sequence +from kmk.common.macros.simple import send_string +from kmk.common.macros.unicode import unicode_string_sequence from kmk.common.pins import Pin as P +from kmk.common.types import AttrDict from kmk.entrypoints.handwire.pyboard import main cols = (P.Y12, P.Y11, P.Y10, P.Y9, P.X8, P.X7, P.X6, P.X5, P.X4, P.X3, P.X2, P.X1) @@ -14,84 +18,45 @@ diode_orientation = DiodeOrientation.COLUMNS unicode_mode = UnicodeModes.LINUX tap_time = 150 leader_timeout = 2000 -DEBUG_ENABLE = True +DEBUG_ENABLE = False # -------------------------------Macros ----------------------------------------------- -FLIP = unicode_codepoint_sequence([ - "28", - "30ce", - "ca0", - "75ca", - "ca0", - "29", - "30ce", - "5f61", - "253b", - "2501", - "253b", -]) + +gc.collect() +emoticons = AttrDict({ + # Emoticons, but fancier + 'ANGRY_TABLE_FLIP': r'(ノಠ痊ಠ)ノ彡┻━┻', + 'CHEER': r'+。:.゚ヽ(´∀。)ノ゚.:。+゚゚+。:.゚ヽ(*´∀)ノ゚.:。+゚', + 'TABLE_FLIP': r'(╯°□°)╯︵ ┻━┻', + 'WAT': r'⊙.☉', + 'FF': r'凸(゚Д゚#)', + 'F': r'( ̄^ ̄)凸', + 'MEH': r'╮( ̄_ ̄)╭', + 'YAY': r'o(^▽^)o', +}) + +for k, v in emoticons.items(): + emoticons[k] = unicode_string_sequence(v) # ---------------------- Leader Key Macros -------------------------------------------- +gc.collect() LEADER_DICTIONARY = { - (KC.F, KC.L, KC.I, KC.P): - unicode_codepoint_sequence([ - "28", - "30ce", - "ca0", - "75ca", - "ca0", - "29", - "30ce", - "5f61", - "253b", - "2501", - "253b", - ]), - (KC.C, KC.H, KC.E, KC.E, KC.R): - unicode_codepoint_sequence([ - '002B', - 'FF61', - '003A', - '002E', - 'FF9F', - '30FD', - '0028', - '00B4', - '2200', - 'FF61', - '0029', - 'FF89', - 'FF9F', - '002E', - '003A', - 'FF61', - '002B', - 'FF9F', - 'FF9F', - '002B', - 'FF61', - '003A', - '002E', - 'FF9F', - '30FD', - '0028', - '002A', - '00B4', - '2200', - '0029', - 'FF89', - 'FF9F', - '002E', - '003A', - 'FF61', - '002B', - 'FF9F', - ]), + (KC.F, KC.L, KC.I, KC.P): emoticons.ANGRY_TABLE_FLIP, + (KC.C, KC.H, KC.E, KC.E, KC.R): emoticons.CHEER, + (KC.W, KC.A, KC.T): emoticons.WAT, + (KC.F, KC.F): emoticons.FF, + (KC.F,): emoticons.F, + (KC.M, KC.E, KC.H): emoticons.MEH, + (KC.Y, KC.A, KC.Y): emoticons.YAY, } +gc.collect() +WPM = send_string("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Bibendum arcu vitae elementum curabitur vitae nunc sed. Facilisis sed odio morbi quis.") + # ---------------------- Keymap --------------------------------------------------------- +gc.collect() keymap = [ [ # Default @@ -123,7 +88,7 @@ keymap = [ ], [ # Raise3 - [KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, FLIP, KC.TRNS, KC.F10, KC.F11, KC.F12, KC.LSHIFT(KC.INS)], + [WPM, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F10, KC.F11, KC.F12, KC.LSHIFT(KC.INS)], [KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F7, KC.F8, KC.F9, KC.NO], [KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F4, KC.F5, KC.F6, KC.NO], [KC.DF(0), KC.DF(1), KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F1, KC.F2, KC.F3, KC.NO], diff --git a/util/bootloader.py b/util/bootloader.py index 8936063..064d74c 100644 --- a/util/bootloader.py +++ b/util/bootloader.py @@ -1,3 +1,8 @@ -from kmk.common.util import reset_bootloader +try: + import machine + machine.bootloader() -reset_bootloader() +except ImportError: + import microcontroller + microcontroller.on_next_reset(microcontroller.RunMode.BOOTLOADER) + microcontroller.reset() diff --git a/util/reset.py b/util/reset.py index 4573316..4003007 100644 --- a/util/reset.py +++ b/util/reset.py @@ -1,3 +1,7 @@ -from kmk.common.util import reset_keyboard +try: + import machine + machine.reset() -reset_keyboard() +except ImportError: + import microcontroller + microcontroller.reset()