Add new keyboard now on Circuitpython.

This commit is contained in:
Kyle Brown 2018-10-10 20:46:59 -07:00
parent f30b4aaf19
commit 70db4ae84d
4 changed files with 137 additions and 75 deletions

View File

@ -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],
],
]

View File

@ -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],

View File

@ -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()

View File

@ -1,3 +1,7 @@
from kmk.common.util import reset_keyboard
try:
import machine
machine.reset()
reset_keyboard()
except ImportError:
import microcontroller
microcontroller.reset()