7 Commits

Author SHA1 Message Date
cole
72fade3635 formating 2023-02-19 22:29:25 -08:00
Cole Smith
c86be365de fixed? 2023-02-05 14:30:25 -08:00
Cole Smith
0ec08c7ee0 fixed rhymestone keyboard and tested it 2023-02-05 12:22:16 -08:00
hixan
47c242a2c9 Update layers.md
The advanced example was missing a self argument
2023-01-29 02:53:53 +00:00
xs5871
4d52afa086 Remove erroneous argument from hsv_to_rgbw conversion function 2023-01-26 18:57:08 -08:00
claycooper
1935f05ccb Updated key creation for consistency 2023-01-24 16:41:43 +00:00
claycooper
83110c5f80 Re-formatted key creation to be consistent 2023-01-24 16:41:43 +00:00
8 changed files with 178 additions and 193 deletions

View File

@@ -1,24 +0,0 @@
# Draculad
The Draculad is is a feature-packed 30% split columnar staggered keyboard.
Retailers (USA)
[Boardsource](https://boardsource.xyz/store)
Extensions enabled by default
- [Layers](/docs/en/layers.md) Need more keys than switches? Use layers.
- [ModTap](/docs/en/modtap.md) Allows mod keys to act as different keys when tapped.
- [Split](/docs/en/split_keyboards.md) Connects halves using a wire
- [peg_RGB_matrix](/docs/en/peg_rgb_matrix.md) Allows mod keys to act as different keys when tapped.
- [peg_oled_display](/docs/en/peg_oled_display.md) Connects halves using a wire
Common Extensions
- [Power](/docs/enpower.md) Powersaving features for battery life
## Microcontroller support
Update this line in `kb.py` to any supported microcontroller in `kmk/quickpin/pro_micro`:
```python
from kmk.quickpin.pro_micro.boardsource_blok import pinout as pins
```

View File

@@ -1,69 +0,0 @@
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.boardsource_blok import pinout as pins
from kmk.scanners import DiodeOrientation
# from kmk.scanners.encoder import RotaryioEncoder
from kmk.scanners.keypad import MatrixScanner
class KMKKeyboard(_KMKKeyboard):
def __init__(self):
# create and register the scanner
self.matrix = [
MatrixScanner(
# required arguments:
column_pins = self.col_pins,
row_pins = self.row_pins,
# optional arguments with defaults:
columns_to_anodes=DiodeOrientation.COL2ROW,
interval=0.02,
max_events=64
),
# RotaryioEncoder(
# pin_a=self.pin_a1,
# pin_b=self.pin_b1,
# # optional
# divisor=4,
# ),
# RotaryioEncoder(
# pin_a=self.pin_a2,
# pin_b=self.pin_b2,
# # optional
# divisor=4,
# )
]
col_pins = (
pins[avr["F4"]],
pins[avr["F5"]],
pins[avr["F6"]],
pins[avr["F7"]],
pins[avr["B1"]],
)
row_pins = (pins[avr["D4"]], pins[avr["C6"]], pins[avr["D7"]], pins[avr["E6"]])
data_pin = pins[avr["D2"]]
rgb_pixel_pin = pins[avr["D3"]]
rgb_num_pixels = 20
i2c = board.I2C
SCL=pins[5]
SDA=pins[4]
pin_a1=pins[avr["B2"]]
pin_a2=pins[avr["B4"]]
pin_b1=pins[avr["B6"]]
pin_b2=pins[avr["B5"]]
led_key_pos=[
5,6,7,8,9,19,18,17,16,15,14,13,12,11,10,0,1,2,3,4
]
brightness_limit = 1.0
num_pixels = 20
# NOQA
# flake8: noqa
# fmt: off
coord_mapping = [
0, 1, 2, 3, 4, 24, 23, 22, 21, 20,
5, 6, 7, 8, 9, 29, 28, 27, 26, 25,
10, 11, 12, 13, 14, 34, 33, 32, 31, 30,
17, 18, 19, 39, 36, 35,
]

View File

@@ -1,64 +0,0 @@
from kb import KMKKeyboard
from kmk.extensions.peg_oled_Display import (
Oled,
OledData,
OledDisplayMode,
OledReactionType,
)
from kmk.extensions.peg_rgb_matrix import Rgb_matrix
from kmk.keys import KC
from kmk.modules.layers import Layers
from kmk.modules.modtap import ModTap
from kmk.modules.split import Split
keyboard = KMKKeyboard()
keyboard.debug_enable=True
modtap = ModTap()
layers_ext = Layers()
keyboard.modules.append(layers_ext)
keyboard.modules.append(modtap)
# oled
oled_ext = Oled(OledData(corner_one={0:OledReactionType.STATIC,1:["1 2 3 4 5 6","","","","","","",""]},corner_two={0:OledReactionType.STATIC,1:[" 7 8 Layer","","","","","",""," 7 8 Layer"]},corner_three={0:OledReactionType.LAYER,1:["^"," ^"," ^"," ^"," ^"," ^","",""]},corner_four={0:OledReactionType.LAYER,1:["","","","","",""," ^"," ^"]}),toDisplay=OledDisplayMode.TXT,flip= True)
# oled
keyboard.extensions.append(oled_ext)
# ledmap
rgb_ext = Rgb_matrix(ledDisplay=[[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255],[255,255,255]],split=True,rightSide=False,disable_auto_write=True)
# ledmap
keyboard.extensions.append(rgb_ext)
split = Split(use_pio=True)
keyboard.modules.append(split)
_______ = KC.TRNS
XXXXXXX = KC.NO
LOWER = KC.MO(2)
RAISE = KC.MO(1)
keyboard.keymap = [
[ #QWERTY
KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P,\
KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.SCLN,\
KC.Z, KC.X, KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, KC.DOT, KC.SLSH,\
KC.LCTL, LOWER, KC.SPC, KC.BSPC, RAISE, KC.ENT
],
[ #RAISE
KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0,\
KC.TAB, KC.LEFT, KC.DOWN, KC.UP, KC.RGHT, XXXXXXX, KC.MINS, KC.EQL, KC.LBRC, KC.RBRC,\
KC.LCTL, KC.GRV, KC.LGUI, KC.LALT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.BSLS, KC.QUOT,\
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
],
[ #LOWER
KC.EXLM, KC.AT, KC.HASH, KC.DLR, KC.PERC, KC.CIRC, KC.AMPR, KC.ASTR, KC.LPRN, KC.RPRN,\
KC.ESC, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.UNDS, KC.PLUS, KC.LCBR, KC.RCBR,\
KC.CAPS, KC.TILD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.PIPE, KC.DQT,\
XXXXXXX, XXXXXXX, XXXXXXX, KC.ENT, XXXXXXX, KC.DEL
]
]
if __name__ == '__main__':
keyboard.go()

View File

@@ -6,16 +6,18 @@ from kmk.scanners import DiodeOrientation
class KMKKeyboard(_KMKKeyboard):
row_pins = (board.pins[19], board.pins[18], board.pins[17], board.pins[16])
row_pins = (pins[19], pins[18], pins[17], pins[16])
col_pins = (
board.pins[6],
board.pins[7],
board.pins[8],
board.pins[9],
board.pins[10],
pins[6],
pins[7],
pins[8],
pins[9],
pins[10],
)
diode_orientation = DiodeOrientation.COLUMNS
rgb_pixel_pin = pins[0]
rgb_num_pixels = 40
data_pin = board.pins[1]
data_pin = pins[1]
SCL = board.SCL
SDA = board.SDA
i2c = board.I2C

View File

@@ -1,51 +1,185 @@
from kb import KMKKeyboard
from kmk.extensions.layers import Layers
from kmk.extensions.split import Split, SplitSide, SplitType
from kmk.extensions.peg_oled_Display import (
Oled,
OledData,
OledDisplayMode,
OledReactionType,
)
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)
split = Split(use_pio=True)
oled_ext = Oled(
OledData(
corner_one={
0: OledReactionType.STATIC,
1: ['1 2 3 4 5 6', '', '', '', '', '', '', ''],
},
corner_two={
0: OledReactionType.STATIC,
1: [' 7 8 Layer', '', '', '', '', '', '', ' 7 8 Layer'],
},
corner_three={
0: OledReactionType.LAYER,
1: ['^', ' ^', ' ^', ' ^', ' ^', ' ^', '', ''],
},
corner_four={
0: OledReactionType.LAYER,
1: ['', '', '', '', '', '', ' ^', ' ^'],
},
),
toDisplay=OledDisplayMode.TXT,
flip=True,
)
keyboard.extensions.append(oled_ext)
layers_ext = Layers()
keyboard.extensions = [layers_ext, split]
keyboard.modules = [layers_ext, split]
# Cleaner key names
_______ = KC.TRNS
XXXXXXX = KC.NO
LOWER = KC.MO(2)
RAISE = KC.MO(1)
KC_Z_SF = KC.LSFT(KC.Z)
KC_SLSF = KC.RSFT(KC.SLSH)
KC_11SF = KC.LSFT(KC.F11)
KC_GRSF = KC.RSFT(KC.GRV)
keyboard.keymap = [
[ #QWERTY
KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P,
KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.ENT,
KC.Z_SF, KC.X, KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, KC.DOT, KC.SLSF,
KC.LCTL, KC.LALT, KC.LGUI, LOWER, KC.BSPC, KC.SPC, RAISE, KC.RGUI, KC.APP, KC.RCTL
[ # QWERTY
KC.Q,
KC.W,
KC.E,
KC.R,
KC.T,
KC.Y,
KC.U,
KC.I,
KC.O,
KC.P,
KC.A,
KC.S,
KC.D,
KC.F,
KC.G,
KC.H,
KC.J,
KC.K,
KC.L,
KC.ENT,
KC_Z_SF,
KC.X,
KC.C,
KC.V,
KC.B,
KC.N,
KC.M,
KC.COMM,
KC.DOT,
KC_SLSF,
KC.LCTL,
KC.LALT,
KC.LGUI,
LOWER,
KC.BSPC,
KC.SPC,
RAISE,
KC.RGUI,
KC.APP,
KC.RCTL,
],
[ #RAISE
KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0,
KC.LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.LEFT, KC.DOWN, KC.UP, KC.RGHT, KC.RSFT,
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.MINS, KC.RO, KC.COMM, KC.DOT, KC.SLSF,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
[ # RAISE
KC.N1,
KC.N2,
KC.N3,
KC.N4,
KC.N5,
KC.N6,
KC.N7,
KC.N8,
KC.N9,
KC.N0,
KC.LSFT,
XXXXXXX,
XXXXXXX,
XXXXXXX,
XXXXXXX,
KC.LEFT,
KC.DOWN,
KC.UP,
KC.RGHT,
KC.RSFT,
XXXXXXX,
XXXXXXX,
XXXXXXX,
XXXXXXX,
XXXXXXX,
KC.MINS,
KC.RO,
KC.COMM,
KC.DOT,
KC_SLSF,
_______,
_______,
_______,
_______,
_______,
_______,
_______,
_______,
_______,
_______,
],
[ # LOWER
KC.F1,
KC.F2,
KC.F3,
KC.F4,
KC.F5,
KC.MINS,
KC.EQL,
KC.LBRC,
KC.RBRC,
KC.BSLS,
KC.F6,
KC.F7,
KC.F8,
KC.F9,
KC.F10,
XXXXXXX,
XXXXXXX,
XXXXXXX,
KC.SCLN,
KC.QUOT,
KC_11SF,
KC.F12,
KC.ESC,
KC.TAB,
_______,
KC.DEL,
XXXXXXX,
XXXXXXX,
KC.RO,
KC_GRSF,
_______,
_______,
_______,
_______,
KC.DEL,
_______,
_______,
_______,
_______,
_______,
],
[ #LOWER
KC.F1, KC.F2, KC.F3, KC.F4, KC.F5, KC.MINS, KC.EQL, KC.LBRC, KC.RBRC, KC.BSLS,
KC.F6, KC.F7, KC.F8, KC.F9, KC.F10, XXXXXXX, XXXXXXX, XXXXXXX, KC.SCLN, KC.QUOT,
KC.N11SF, KC.F12, KC.ESC, KC.TAB, _______, KC.DEL, XXXXXXX, XXXXXXX, KC.RO, KC.GRSF,
_______, _______, _______, _______, KC.DEL, _______, _______, _______, _______, _______
]
]
if __name__ == '__main__':

View File

@@ -84,7 +84,7 @@ class Layers(_Layers):
last_top_layer = 0
hues = (4, 20, 69)
def after_hid_send(keyboard):
def after_hid_send(self, keyboard):
if keyboard.active_layers[0] != self.last_top_layer:
self.last_top_layer = keyboard.active_layers[0]
rgb.set_hsv_fill(self.hues[self.last_top_layer], 255, 255)

View File

@@ -59,7 +59,7 @@ def hsv_to_rgb(hue, sat, val):
return (r >> 8), (g >> 8), (b >> 8)
def hsv_to_rgbw(self, hue, sat, val):
def hsv_to_rgbw(hue, sat, val):
'''
Converts HSV values, and returns a tuple of RGBW values
:param hue:

View File

@@ -46,7 +46,9 @@ class Layers(HoldTap):
on_release=self._mo_released,
)
make_argumented_key(
validator=layer_key_validator, names=('DF',), on_press=self._df_pressed
validator=layer_key_validator,
names=('DF',),
on_press=self._df_pressed,
)
make_argumented_key(
validator=layer_key_validator,
@@ -55,10 +57,14 @@ class Layers(HoldTap):
on_release=self._lm_released,
)
make_argumented_key(
validator=layer_key_validator, names=('TG',), on_press=self._tg_pressed
validator=layer_key_validator,
names=('TG',),
on_press=self._tg_pressed,
)
make_argumented_key(
validator=layer_key_validator, names=('TO',), on_press=self._to_pressed
validator=layer_key_validator,
names=('TO',),
on_press=self._to_pressed,
)
make_argumented_key(
validator=layer_key_validator_lt,