Add Rebound rev4 with 1u or 2u layouts and rotary encoder support (#394)

* small tuning

* use all 3 indicators

* add rebound rev4

* define rotary encoder behavior

* add levinson rev3 vial

* add rebound rotary encoder 2 extra keys

* add 2u space layout

* remove levinson stuff

* remove minivan changes

* wiring comment
This commit is contained in:
Dong Zhou 2023-03-06 01:08:59 -05:00 committed by GitHub
parent 6c0ef5cbae
commit c7c4e39021
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 281 additions and 0 deletions

View File

@ -0,0 +1,13 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define VIAL_KEYBOARD_UID {0xAE, 0x02, 0xAA, 0xA7, 0xC0, 0x1D, 0xFF, 0xE3}
/* delete these two lines if you have newer wiring than 4.3 */
#undef MATRIX_ROW_PINS
#define MATRIX_ROW_PINS { D5, B7, D4, C6, F7, F6, F5, F4 }
#define VIAL_UNLOCK_COMBO_ROWS { 0, 1}
#define VIAL_UNLOCK_COMBO_COLS { 0, 0 }

View File

@ -0,0 +1,86 @@
#include QMK_KEYBOARD_H
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
enum layer_names {
_COLEMAK,
_LOWER,
_RAISE,
_ADJUST,
};
enum custom_keycodes {
COLEMAK= SAFE_RANGE,
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
#define ADJUST MO(_ADJUST)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_COLEMAK] = LAYOUT_all(
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
LCTL_T(KC_ESC), KC_A, KC_R, KC_S, KC_T, KC_G, SGUI(KC_RBRC), KC_K, KC_N, KC_E, KC_I, KC_O, RSFT_T(KC_ENT),
LSFT_T(KC_GRV), KC_Z, KC_X, KC_C, KC_D, KC_V, KC_SPC, KC_M, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT,
MO(2), SGUI(KC_LBRC), TT(1), LGUI_T(KC_SPC), _______, LT(3, KC_ENT), KC_MUTE, LT(1, KC_SPC), _______, RALT_T(KC_LEFT), RSFT_T(KC_DOWN), RGUI_T(KC_UP), RCTL_T(KC_RIGHT)
),
[_LOWER] = LAYOUT_all(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
KC_TAB, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_TRNS, KC_TRNS, KC_PLUS, KC_KP_1, KC_KP_2, KC_KP_3, KC_ASTR, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_ESC, KC_MINS, KC_EQL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, _______, KC_KP_0, KC_TRNS, _______, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_RAISE] = LAYOUT_all(
KC_BTN1, KC_BTN2, _______, SGUI(KC_LBRC), SGUI(KC_RBRC), _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_COLN, RALT(KC_BSPC),
KC_TRNS, _______, _______, _______, KC_BSPC, _______, KC_TRNS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENT, RALT(KC_D),
KC_TRNS, _______, _______, _______, _______, _______, KC_TRNS, _______, RALT(KC_LEFT), RALT(KC_RIGHT), _______, RALT(KC_B), RALT(KC_F),
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, _______, LALT(KC_DEL), KC_TRNS, KC_DEL, _______, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R
),
[_ADJUST] = LAYOUT_all(
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, _______, KC_TRNS, KC_TRNS,
KC_CAPS, KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, _______, KC_TRNS, KC_PLUS, KC_DLR, KC_PIPE, KC_BSLS, KC_DQT, KC_TRNS,
KC_TRNS, KC_BRID, KC_BRIU, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_MINS, KC_EQL, KC_LT, KC_GT, KC_QUES, KC_TRNS,
KC_TRNS, KC_TRNS, QK_BOOT, _______, _______, KC_TRNS, KC_TRNS, KC_UNDS, _______, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R
)
};
/* layer_state_t layer_state_set_user(layer_state_t state) { */
/* return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); */
/* } */
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case COLEMAK:
if (record->event.pressed) {
set_single_persistent_default_layer(_COLEMAK);
}
break;
}
return true;
}
/* bool encoder_update_user(uint8_t index, bool clockwise) { */
/* if (clockwise) { */
/* tap_code16(S(KC_VOLD)); */
/* } else { */
/* tap_code16(KC_VOLU); */
/* } */
/* return true; */
/* } */
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), },
[1] = { ENCODER_CCW_CW(KC_BRIU, KC_BRID), },
[2] = { ENCODER_CCW_CW(KC_WH_L, KC_WH_R), },
[3] = { ENCODER_CCW_CW(KC_WH_U, KC_WH_D), },
};
#endif

View File

@ -0,0 +1,22 @@
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
AUTO_SHIFT_ENABLE = yes
COMBO_ENABLE = yes
MIDI_ENABLE = no
AUDIO_ENABLE = no
BLUETOOTH_ENABLE = no
LTO_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = no
VIA_ENABLE = yes
VIAL_ENABLE = yes
QMK_SETTINGS = yes
TAP_DANCE_ENABLE = yes
KEY_OVERRIDE_ENABLE = no
OLED_DRIVER_ENABLE = no
ENCODER_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View File

@ -0,0 +1,160 @@
{
"name": "Rebound Rev. 4",
"vendorId": "0x524D",
"productId": "0x0001",
"lighting": "qmk_rgblight",
"matrix": {"rows": 8, "cols": 7},
"layouts": {
"labels":["2u space"],
"keymap":
[
[
{
"y": 2,
"x": 2.5,
"c": "#aaaaaa"
},
"0,0",
{
"c": "#cccccc"
},
"7,0",
"0,1",
"7,1",
"0,2",
"7,2",
{
"x": 3.5
},
"0,4",
"7,4",
"0,5",
"7,5",
"0,6",
{
"c": "#aaaaaa"
},
"7,6"
],
[
{
"x": 2.5,
"c": "#777777"
},
"1,0",
{
"c": "#cccccc"
},
"6,0",
"1,1",
"6,1",
"1,2",
"6,2",
{
"x": 1.25,
"c": "#aaaaaa"
},
"1,3",
{
"x": 1.25,
"c": "#cccccc"
},
"1,4",
"6,4",
"1,5",
"6,5",
"1,6",
"6,6"
],
[
{
"x": 2.5,
"c": "#aaaaaa"
},
"2,0",
{
"c": "#cccccc"
},
"5,0",
"2,1",
"5,1",
"2,2",
"5,2",
{
"x": 1.25,
"c": "#aaaaaa"
},
"2,3",
{
"x": 1.25,
"c": "#cccccc"
},
"2,4",
"5,4",
"2,5",
"5,5",
"2,6",
{
"c": "#777777"
},
"5,6"
],
[
{
"x": 2.5,
"c": "#aaaaaa"
},
"3,0",
"4,0",
"3,1",
"4,1",
"3,2\n\n\n0,0",
{
"c": "#cccccc"
},
"4,2\n\n\n0,0",
{
"x": 1.25,
"c": "#777777"
},
"3,3",
{
"x": 1.25,
"c": "#cccccc"
},
"3,4\n\n\n0,0",
{
"c": "#aaaaaa"
},
"4,4\n\n\n0,0",
"3,5",
"4,5",
"3,6",
"4,6"
],
[
{
"x": 9.25,
"c": "#cccccc"
},
"0,0\n\n\n\n\n\n\n\n\ne",
"0,1\n\n\n\n\n\n\n\n\ne"
],
[
{
"y": -0.75,
"x": 6.5,
"w": 2
},
"4,2\n\n\n0,1",
{
"x": 3.5,
"w": 2
},
"3,4\n\n\n0,1"
]
]
}
}