Compare commits
7 Commits
reviung34
...
rhymestone
Author | SHA1 | Date | |
---|---|---|---|
|
72fade3635 | ||
|
c86be365de | ||
|
0ec08c7ee0 | ||
|
47c242a2c9 | ||
|
4d52afa086 | ||
|
1935f05ccb | ||
|
83110c5f80 |
@@ -1,28 +0,0 @@
|
|||||||
# Reviung34
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The Reviung34 is a 34 key keyboard designed by gtips, it is a slightly smaller
|
|
||||||
version of the popular Reviung 39. These "split non-split" keyboards offer a lot
|
|
||||||
of features split keyboards have in terms of comfort and ergonomics but do so in
|
|
||||||
a single-piece package. Many people consider keyboards in this style easier to
|
|
||||||
travel with since you don't have to manage two halves and there is of course no
|
|
||||||
need for a TRRS cable. This board sits somewhere between and Atreus and Corne,
|
|
||||||
and it is extremely comfortable to use.
|
|
||||||
|
|
||||||
Hardware Availability: [PCB & Case Data](https://github.com/gtips/reviung/tree/master)
|
|
||||||
|
|
||||||
Retailers (USA)
|
|
||||||
[Boardsource](https://boardsource.xyz/store)
|
|
||||||
|
|
||||||
Extensions enabled by default
|
|
||||||
- [Layers](/docs/en/layers.md) Need more keys than switches? Use layers.
|
|
||||||
- [RGB matrix](/docs/en/peg_rgb_matrix.md) Light it up
|
|
||||||
|
|
||||||
|
|
||||||
## 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
|
|
@@ -1,37 +0,0 @@
|
|||||||
import board
|
|
||||||
|
|
||||||
from kmk.kmk_keyboard import KMKKeyboard as _KMKKeyboard
|
|
||||||
from kmk.quickpin.pro_micro.boardsource_blok import pinout as pins
|
|
||||||
from kmk.scanners import DiodeOrientation
|
|
||||||
from kmk.scanners import intify_coordinate as ic
|
|
||||||
|
|
||||||
|
|
||||||
class KMKKeyboard(_KMKKeyboard):
|
|
||||||
row_pins = (
|
|
||||||
pins[19],
|
|
||||||
pins[18],
|
|
||||||
pins[17],
|
|
||||||
pins[16]
|
|
||||||
)
|
|
||||||
col_pins = (
|
|
||||||
pins[6],
|
|
||||||
pins[7],
|
|
||||||
pins[8],
|
|
||||||
pins[9],
|
|
||||||
pins[10],
|
|
||||||
pins[15],
|
|
||||||
pins[14],
|
|
||||||
pins[13],
|
|
||||||
pins[12],
|
|
||||||
)
|
|
||||||
diode_orientation = DiodeOrientation.COLUMNS
|
|
||||||
rgb_pixel_pin = pins[0]
|
|
||||||
rgb_num_pixels = 9
|
|
||||||
led_key_pos = [0,1,2,3,8,4,5,6,7]
|
|
||||||
brightness_limit = 1.0
|
|
||||||
num_pixels = 9
|
|
||||||
coord_mapping = [
|
|
||||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 32
|
|
||||||
,9, 10, 11, 12, 13, 14, 15, 16, 17, 33
|
|
||||||
,18,19, 20, 21, 22, 23, 24, 25, 26, 34
|
|
||||||
,29,30,31,35]
|
|
@@ -1,49 +0,0 @@
|
|||||||
from kb import KMKKeyboard
|
|
||||||
|
|
||||||
from kmk.extensions.peg_rgb_matrix import Rgb_matrix
|
|
||||||
from kmk.extensions.rgb import RGB
|
|
||||||
from kmk.keys import KC
|
|
||||||
from kmk.modules.layers import Layers
|
|
||||||
|
|
||||||
keyboard = KMKKeyboard()
|
|
||||||
|
|
||||||
# Adding extensions
|
|
||||||
# ledmap
|
|
||||||
rgb_ext = Rgb_matrix(ledDisplay=[[55,55,55],[55,55,55],[55,55,55],[55,55,55],[55,55,55],[55,55,55],[55,55,55],[55,55,55],[55,55,55]],split=False,rightSide=False,disable_auto_write=True)
|
|
||||||
# ledmap
|
|
||||||
layers_ext = Layers()
|
|
||||||
|
|
||||||
keyboard.modules.append(layers_ext)
|
|
||||||
keyboard.extensions.append(rgb_ext)
|
|
||||||
|
|
||||||
# Cleaner key names
|
|
||||||
_______ = 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,\
|
|
||||||
LOWER, KC.SPC, KC.BSPC, RAISE
|
|
||||||
],
|
|
||||||
[ #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
|
|
||||||
],
|
|
||||||
[ #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, KC.ENT, KC.DEL
|
|
||||||
]
|
|
||||||
]
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
keyboard.go()
|
|
||||||
|
|
@@ -6,16 +6,18 @@ from kmk.scanners import DiodeOrientation
|
|||||||
|
|
||||||
|
|
||||||
class KMKKeyboard(_KMKKeyboard):
|
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 = (
|
col_pins = (
|
||||||
board.pins[6],
|
pins[6],
|
||||||
board.pins[7],
|
pins[7],
|
||||||
board.pins[8],
|
pins[8],
|
||||||
board.pins[9],
|
pins[9],
|
||||||
board.pins[10],
|
pins[10],
|
||||||
)
|
)
|
||||||
diode_orientation = DiodeOrientation.COLUMNS
|
diode_orientation = DiodeOrientation.COLUMNS
|
||||||
rgb_pixel_pin = pins[0]
|
rgb_pixel_pin = pins[0]
|
||||||
rgb_num_pixels = 40
|
rgb_num_pixels = 40
|
||||||
data_pin = board.pins[1]
|
data_pin = pins[1]
|
||||||
|
SCL = board.SCL
|
||||||
|
SDA = board.SDA
|
||||||
i2c = board.I2C
|
i2c = board.I2C
|
||||||
|
@@ -1,51 +1,185 @@
|
|||||||
from kb import KMKKeyboard
|
from kb import KMKKeyboard
|
||||||
|
|
||||||
from kmk.extensions.layers import Layers
|
from kmk.extensions.peg_oled_Display import (
|
||||||
from kmk.extensions.split import Split, SplitSide, SplitType
|
Oled,
|
||||||
|
OledData,
|
||||||
|
OledDisplayMode,
|
||||||
|
OledReactionType,
|
||||||
|
)
|
||||||
from kmk.keys import KC
|
from kmk.keys import KC
|
||||||
|
from kmk.modules.layers import Layers
|
||||||
|
from kmk.modules.split import Split, SplitSide, SplitType
|
||||||
|
|
||||||
keyboard = KMKKeyboard()
|
keyboard = KMKKeyboard()
|
||||||
|
|
||||||
# TODO Comment one of these on each side
|
split = Split(use_pio=True)
|
||||||
split_side = SplitSide.LEFT
|
oled_ext = Oled(
|
||||||
split_side = SplitSide.RIGHT
|
OledData(
|
||||||
split = Split(split_type=SplitType.BLE, split_side=split_side)
|
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()
|
layers_ext = Layers()
|
||||||
|
|
||||||
keyboard.extensions = [layers_ext, split]
|
keyboard.modules = [layers_ext, split]
|
||||||
|
|
||||||
# Cleaner key names
|
|
||||||
_______ = KC.TRNS
|
_______ = KC.TRNS
|
||||||
XXXXXXX = KC.NO
|
XXXXXXX = KC.NO
|
||||||
|
|
||||||
LOWER = KC.MO(2)
|
LOWER = KC.MO(2)
|
||||||
RAISE = KC.MO(1)
|
RAISE = KC.MO(1)
|
||||||
|
|
||||||
|
|
||||||
KC_Z_SF = KC.LSFT(KC.Z)
|
KC_Z_SF = KC.LSFT(KC.Z)
|
||||||
KC_SLSF = KC.RSFT(KC.SLSH)
|
KC_SLSF = KC.RSFT(KC.SLSH)
|
||||||
KC_11SF = KC.LSFT(KC.F11)
|
KC_11SF = KC.LSFT(KC.F11)
|
||||||
KC_GRSF = KC.RSFT(KC.GRV)
|
KC_GRSF = KC.RSFT(KC.GRV)
|
||||||
|
|
||||||
keyboard.keymap = [
|
keyboard.keymap = [
|
||||||
[ #QWERTY
|
[ # QWERTY
|
||||||
KC.Q, KC.W, KC.E, KC.R, KC.T, KC.Y, KC.U, KC.I, KC.O, KC.P,
|
KC.Q,
|
||||||
KC.A, KC.S, KC.D, KC.F, KC.G, KC.H, KC.J, KC.K, KC.L, KC.ENT,
|
KC.W,
|
||||||
KC.Z_SF, KC.X, KC.C, KC.V, KC.B, KC.N, KC.M, KC.COMM, KC.DOT, KC.SLSF,
|
KC.E,
|
||||||
KC.LCTL, KC.LALT, KC.LGUI, LOWER, KC.BSPC, KC.SPC, RAISE, KC.RGUI, KC.APP, KC.RCTL
|
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
|
[ # RAISE
|
||||||
KC.N1, KC.N2, KC.N3, KC.N4, KC.N5, KC.N6, KC.N7, KC.N8, KC.N9, KC.N0,
|
KC.N1,
|
||||||
KC.LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.LEFT, KC.DOWN, KC.UP, KC.RGHT, KC.RSFT,
|
KC.N2,
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC.MINS, KC.RO, KC.COMM, KC.DOT, KC.SLSF,
|
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__':
|
if __name__ == '__main__':
|
||||||
|
@@ -84,7 +84,7 @@ class Layers(_Layers):
|
|||||||
last_top_layer = 0
|
last_top_layer = 0
|
||||||
hues = (4, 20, 69)
|
hues = (4, 20, 69)
|
||||||
|
|
||||||
def after_hid_send(keyboard):
|
def after_hid_send(self, keyboard):
|
||||||
if keyboard.active_layers[0] != self.last_top_layer:
|
if keyboard.active_layers[0] != self.last_top_layer:
|
||||||
self.last_top_layer = keyboard.active_layers[0]
|
self.last_top_layer = keyboard.active_layers[0]
|
||||||
rgb.set_hsv_fill(self.hues[self.last_top_layer], 255, 255)
|
rgb.set_hsv_fill(self.hues[self.last_top_layer], 255, 255)
|
||||||
|
@@ -59,7 +59,7 @@ def hsv_to_rgb(hue, sat, val):
|
|||||||
return (r >> 8), (g >> 8), (b >> 8)
|
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
|
Converts HSV values, and returns a tuple of RGBW values
|
||||||
:param hue:
|
:param hue:
|
||||||
|
@@ -46,7 +46,9 @@ class Layers(HoldTap):
|
|||||||
on_release=self._mo_released,
|
on_release=self._mo_released,
|
||||||
)
|
)
|
||||||
make_argumented_key(
|
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(
|
make_argumented_key(
|
||||||
validator=layer_key_validator,
|
validator=layer_key_validator,
|
||||||
@@ -55,10 +57,14 @@ class Layers(HoldTap):
|
|||||||
on_release=self._lm_released,
|
on_release=self._lm_released,
|
||||||
)
|
)
|
||||||
make_argumented_key(
|
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(
|
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(
|
make_argumented_key(
|
||||||
validator=layer_key_validator_lt,
|
validator=layer_key_validator_lt,
|
||||||
|
Reference in New Issue
Block a user